<!DOCTYPE html>
<!-- saved from url=(0087)https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009 -->
<html class="js js flexbox flexboxlegacy canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths" lang="en" dir="ltr"><!--<![endif]--><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]</title>

    <script id="IPdef.acafac0d-3b8a-4d30-8a98-6cbcd5256d93" src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/30155_636991607548096149" type="text/javascript"></script><script id="IPengine" src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/IpEngine_v77.2.js" type="text/javascript"></script><script>(function (H) {
            H.className = H.className.replace(/\bno-js\b/, 'js')
        })(document.documentElement)</script>
    <meta name="generator" content="DokuWiki">
<meta name="robots" content="index,follow">
<meta name="keywords" content="resources,tools-software,linux-drivers,iio-transceiver,adrv9009">
<link rel="search" type="application/opensearchdescription+xml" href="https://wiki.analog.com/lib/exe/opensearch.php" title="Analog Devices Wiki">
<link rel="start" href="https://wiki.analog.com/">
<link rel="contents" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=index" title="Sitemap">
<link rel="manifest" href="https://wiki.analog.com/lib/exe/manifest.php">
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="https://wiki.analog.com/feed.php">
<link rel="alternate" type="application/rss+xml" title="Current namespace" href="https://wiki.analog.com/feed.php?mode=list&amp;ns=resources:tools-software:linux-drivers:iio-transceiver">
<link rel="alternate" type="text/html" title="Plain HTML" href="https://wiki.analog.com/_export/xhtml/resources/tools-software/linux-drivers/iio-transceiver/adrv9009">
<link rel="alternate" type="text/plain" title="Wiki Markup" href="https://wiki.analog.com/_export/raw/resources/tools-software/linux-drivers/iio-transceiver/adrv9009">
<link rel="canonical" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009">
<link rel="stylesheet" type="text/css" href="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/css.php">
<!--[if gte IE 9]><!-->
<script type="text/javascript">/*<![CDATA[*/var NS='resources:tools-software:linux-drivers:iio-transceiver';var JSINFO = {"plugin_folded":{"hide":"hide","reveal":"reveal"},"plugin_enforcesummary":{"enforce_summary":1,"default_minoredit":0,"enforce_preview":0},"move_renameokay":false,"id":"resources:tools-software:linux-drivers:iio-transceiver:adrv9009","namespace":"resources:tools-software:linux-drivers:iio-transceiver","ACT":"show","useHeadingNavigation":1,"useHeadingContent":0};
/*!]]>*/</script>
<script type="text/javascript" charset="utf-8" src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/jquery.php"></script>
<script type="text/javascript" charset="utf-8" src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/js.php"></script><style id="iris-css">.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}.iris-square-handle,.ui-slider-handle{border:0;outline:0}</style><style type="text/css" media="screen"><!--/*--><![CDATA[/*><!--*/ .folded.hidden { display: none; } .folder .indicator { visibility: visible; } /*]]>*/--></style>
<!--<![endif]-->

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="https://wiki.analog.com/lib/tpl/analog2014/images/favicon.ico">

    <script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/modernizr.js" type="text/javascript" defer="true"></script>

    <!--[if lt IE 9]>
    <script src="https://assets.analog.com/js/adi/html5ie.js" type="text/javascript"></script>
    <![endif]-->

    <!-- LIVE tracking -->
<script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/global.analytics.js" type="text/javascript"></script>
<script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/satelliteLib-6918599d4993e6e0537845174bbba34655d0ec94.js" type="text/javascript"></script><script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/s-code-contents-1e1faf4ca7b5be533164e434ee1d0be2b1427d97.js"></script><script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/satellite-5cd080a864746d3d740023ef.js"></script><script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/satellite-5cfea31564746d3f630016db.js"></script><script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/satellite-5cc08b9d64746d5d3b00061a.js"></script><script src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/ip.json"></script></head>

<!-- List of supported themes thm-education, thm-applications, thm-parametric, thm-product, thm-community, thm-design-center, thm-my-analog, thm-support -->
<body class="home persistant-nav">


<!-- wiki_header.html -->
<header class="adi_header adi_header--wiki tools-header" id="dokuwiki__top">

    <div class="adi_topbar">
        <div class="adi_container">
            <section class="adi_row">
                <!--  BEGIN:  Internal Links -->
                <nav class="adi_column adi_pull-left">
                    <a class="adi_topbar-link adi_topbar-link--analog-home" href="https://www.analog.com/">
                        <strong>Analog.com</strong>
                    </a>
                    <a class="adi_topbar-link adi_topbar-link--engineer-zone" href="https://ez.analog.com/">
                        <strong class="adi_link--hover-accent">Engineer</strong>
                        <span>Zone</span>
                    </a>
                    <a class="adi_topbar-link adi_topbar-link--analog-dialogue" href="https://www.analog.com/en/analog-dialogue.html">
                        <strong class="adi_link--hover-accent">Analog</strong>
                        <span>Dialogue</span>
                    </a>
                </nav> <!-- /.adi_column.adi_pull-left -->
                <!--  END:  Internal Links  -->
                <!--  BEGIN:  Language Options  -->
                <nav class="adi_column adi_pull-right">
                    <a class="adi_topbar-link adi_topbar-link--light adi_topbar-link--myanalog-logo" href="https://my.analog.com/">
                        <span><img src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/myanalog_logo.png" alt="My Analog Login"></span>&nbsp;
                    </a>

                    <a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=login&amp;sectok=" class="adi_topbar-link adi_topbar-link--light adi_topbar-link--myanalog-login action login" rel="nofollow" title="Log In"><strong>Log In</strong></a>                </nav> <!-- /.adi_column.adi_pull-right -->
                <!--  END:  Language Options  -->
            </section> <!-- /.adi_row -->
        </div> <!-- /.adi_container -->
    </div>



    <div class="adi_container">
        <section class="adi_row">
            <!--  BEGIN:  Global Site Links  -->
            <div class="adi_column adi_site-links-container">
                <nav class="adi_dropdown adi_dropdown--site-links">
                    <a class="adi_dropdown-toggle" href="javascript:void(0)">
                        <i class="adi_site-links-icon fa fa-bars"></i>
                    </a>
                    <div class="adi_dropdown-items adi_site-links">
                        <a class="adi_dropdown-item adi_site-link adi_site-link--previous" href="javascript:history.go(-1);">
                            <strong>&lt;- Return to previous page</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--parametric" href="https://www.analog.com/en/parametric-search/">
                            <strong>Parametric Search</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--products" href="https://www.analog.com/en/products/">
                            <strong>Products</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--application" href="https://www.analog.com/en/applications/">
                            <strong>Applications</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--designcenter" href="https://www.analog.com/en/design-center/">
                            <strong>Design Center</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--community" href="https://ez.analog.com/">
                            <strong>Community</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--education" href="https://www.analog.com/en/education/">
                            <strong>Education</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--support" href="https://www.analog.com/en/support/">
                            <strong>Support</strong>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--light" href="https://www.analog.com/en/support/">
                            <strong>Engineer</strong><span>Zone</span>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--light" href="https://www.analog.com/en/support/">
                            <strong>Analog</strong><span>Dialogue</span>
                        </a>
                        <a class="adi_dropdown-item adi_site-link adi_site-link--light" href="https://www.analog.com/en/support/">
                            <strong>Wiki</strong>
                        </a>
                    </div> <!-- /.adi_dropdown-items -->
                </nav> <!-- /.adi_dropdown.adi_dropdown--site-links -->
            </div> <!-- /.adi_column.adi_site-links -->
            <!--  END:  Global Site Links  -->
            <!--  BEGIN:  Logo  -->
            <div class="adi_column adi_logo-container">
                <a class="adi_logo" href="https://wiki.analog.com/start">
                    <img src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/ADI_Logo_AWP.png" alt="Analog Devices Wiki">
                </a>
            </div> <!-- /.adi_column.adi_logo -->
            <!--  END:  Logo  -->
            <div class="adi_column adi_page-title-container">
                <h1 class="adi_page-title">Wiki</h1>
            </div> <!-- /.adi_column.adi_logo -->
            <!--  END:  Logo  -->
        </section> <!-- /.adi_row -->
    </div> <!-- /.adi_container -->

    <div class="navigation-bar">
        <div class="content-wrap clearfix">
            <ul class="list-inline pull-left nav-links clearfix">
<li class="dropdown"><div class="li"> <a href="https://wiki.analog.com/resources" class="wikilink1" title="resources">Resources and Tools</a></div>
<ul class="submenu">
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/eval" class="wikilink1" title="resources:eval">Evaluation Boards &amp; Kits</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/fpga" class="wikilink1" title="resources:fpga">FPGA Reference Designs</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/quick-start" class="wikilink1" title="resources:quick-start">Quick Start Guides</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-drivers-all" class="wikilink1" title="resources:tools-software:linux-drivers-all">Linux Software Drivers</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/uc-drivers-all" class="wikilink1" title="resources:tools-software:uc-drivers-all">Microcontroller Software Drivers</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/ace" class="wikilink1" title="resources:tools-software:ace">ACE Software</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/technical-guides" class="wikilink1" title="resources:technical-guides">Technical Guides</a></div>
</li>
</ul>
</li>
<li class="dropdown"><div class="li"> <a href="https://wiki.analog.com/university/courses/tutorials/index" class="wikilink1" title="university:courses:tutorials:index">Education Content</a></div>
<ul class="submenu">
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/tools/m1k" class="wikilink1" title="university:tools:m1k">ADALM1000 (M1k) Active Learning Module</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/tools/m2k" class="wikilink1" title="university:tools:m2k">ADALM2000 (M2k) Active Learning Module</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/tools/pluto" class="wikilink1" title="university:tools:pluto">ADALM-PLUTO SDR Active Learning Module</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/tutorials/index" class="wikilink1" title="university:courses:tutorials:index">Tutorials</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/electronics/text/electronics-toc" class="wikilink1" title="university:courses:electronics:text:electronics-toc">On Line Electronics I/II</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/electronics/labs" class="wikilink1" title="university:courses:electronics:labs">Labs for Electronics I/II</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/eps/main-page" class="wikilink1" title="university:courses:eps:main-page">Energy/Power systems</a></div>
</li>
</ul>
</li>
<li class="dropdown"><div class="li"> <a href="https://wiki.analog.com/wiki/help" class="wikilink1" title="wiki:help">Wiki Help</a></div>
<ul class="submenu">
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/wiki/help" class="wikilink1" title="wiki:help">Help</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/wiki/introduction" class="wikilink1" title="wiki:introduction">About Wiki</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/playground/playground" class="wikilink1" title="playground:playground">Playground</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/start?do=index" class="wikilink1" title="start">Wiki Site Map</a></div>
</li>
</ul>
</li>
<li class="dropdown"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#">Wiki Tools</a></div><ul class="submenu"><li class="level2"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=recent" class="action recent" accesskey="r" rel="nofollow" title="Recent Changes [R]">Recent Changes</a></li><li class="level2"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=media&amp;ns=resources%3Atools-software%3Alinux-drivers%3Aiio-transceiver" class="action media" rel="nofollow" title="Media Manager">Media Manager</a></li><li class="level2"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=index" class="action index" accesskey="x" rel="nofollow" title="Sitemap [X]">Sitemap</a></li></ul></li></ul>
            <ul class="list-inline pull-right searchmenu clearfix">
                <li class="search-box">
                    <form action="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009" accept-charset="utf-8" class="search clearfix" id="dw__search" method="get" role="search">
                        <div class="no">
                            <input type="hidden" name="do" value="search">
                            <input type="text" autocomplete="off" id="qsearch__in" accesskey="f" name="id" class="edit" placeholder="search wiki">
                            <button type="submit" value="Search" class="button search-icon" title="Search"></button>

                            <div id="qsearch__out" class="ajax_qsearch JSpopup" style="display: none; white-space: nowrap;">
                            </div>
                        </div>
                    </form>
                </li>
            </ul>
        </div>
    </div>


</header> <!-- /.adi_header -->





<!-- Mobile view navigation drawer-->
<div class="wiki-mob-body">
    <div class="content" role="main">
        <div class="col-md-12 wiki-head-row">
            <div class="row ">
                <div class="title-nophoto">
                    <div class="container page-title ">
                        <h1 data-page-title="true">Analog Devices Wiki</h1>
                    </div>
                <button class="button-nav">&gt;&gt;</button></div>
            </div>
            <div class="col-md-12 floater-menu-container">
                <div class="row product-row">
                    <div class="container">
                        <div class="row">
                            <div class="col-md-2 wiki-right-panel">
                                <div class="row">
                                    <div class="product-bookmarks" id="affix-nav" name="adi_products_left_navigation">
                                        <ul class="nav" id="affix-ul">
                                            <li class="">

                                                <a data-toggle="collapse" data-parent="#accordion" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#" name="SDR-home_2e322e80-5ec4-4b20-b8b8-71702b590a25">Analog Devices
                                                    Wiki
                                                </a>

                                            </li>
                                            <!--Wiki-->
                                            <ul class="list-inline pull-left nav-links clearfix">
<li class="dropdown"><div class="li Res_tools_parent"> <a href="https://wiki.analog.com/resources" class="wikilink1" title="resources">Resources and Tools</a></div>
<ul class="submenu Res_tools_child">
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/eval" class="wikilink1" title="resources:eval">Evaluation Boards &amp; Kits</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/fpga" class="wikilink1" title="resources:fpga">FPGA Reference Designs</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/quick-start" class="wikilink1" title="resources:quick-start">Quick Start Guides</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-drivers-all" class="wikilink1" title="resources:tools-software:linux-drivers-all">Linux Software Drivers</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/uc-drivers-all" class="wikilink1" title="resources:tools-software:uc-drivers-all">Microcontroller Software Drivers</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/ace" class="wikilink1" title="resources:tools-software:ace">ACE Software</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/resources/technical-guides" class="wikilink1" title="resources:technical-guides">Technical Guides</a></div>
</li>
</ul>
</li>
<li class="dropdown"><div class="li Res_tools_parent"> <a href="https://wiki.analog.com/university/courses/tutorials/index" class="wikilink1" title="university:courses:tutorials:index">Education Content</a></div>
<ul class="submenu Res_tools_child">
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/tools/m1k" class="wikilink1" title="university:tools:m1k">ADALM1000 (M1k) Active Learning Module</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/tools/m2k" class="wikilink1" title="university:tools:m2k">ADALM2000 (M2k) Active Learning Module</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/tools/pluto" class="wikilink1" title="university:tools:pluto">ADALM-PLUTO SDR Active Learning Module</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/tutorials/index" class="wikilink1" title="university:courses:tutorials:index">Tutorials</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/electronics/text/electronics-toc" class="wikilink1" title="university:courses:electronics:text:electronics-toc">On Line Electronics I/II</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/electronics/labs" class="wikilink1" title="university:courses:electronics:labs">Labs for Electronics I/II</a></div>
</li>
<li class="level2"><div class="li"> <a href="https://wiki.analog.com/university/courses/eps/main-page" class="wikilink1" title="university:courses:eps:main-page">Energy/Power systems</a></div>
</li>
</ul>
</li>
<li class="dropdown"><div class="li Res_tools_parent"> <a href="https://wiki.analog.com/wiki/help" class="wikilink1" title="wiki:help">Wiki Help</a></div>
<ul class="submenu Res_tools_child">
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/wiki/help" class="wikilink1" title="wiki:help">Help</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/wiki/introduction" class="wikilink1" title="wiki:introduction">About Wiki</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/playground/playground" class="wikilink1" title="playground:playground">Playground</a></div>
</li>
<li class="level3"><div class="li"> <a href="https://wiki.analog.com/start?do=index" class="wikilink1" title="start">Wiki Site Map</a></div>
</li>
</ul>
</li>
<li class="dropdown"><div class="li Res_tools_parent"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#">Wiki Tools</a></div><ul class="submenu Res_tools_child"><li class="level2"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=recent" class="action recent" accesskey="r" rel="nofollow" title="Recent Changes [R]">Recent Changes</a></li><li class="level2"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=media&amp;ns=resources%3Atools-software%3Alinux-drivers%3Aiio-transceiver" class="action media" rel="nofollow" title="Media Manager">Media Manager</a></li><li class="level2"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=index" class="action index" accesskey="x" rel="nofollow" title="Sitemap [X]">Sitemap</a></li></ul></li></ul>                                            <!--Wiki-->
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

            </div>
        </div>
        <div class="special-content">
            <div class="accordion-group language-footer-block">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion4" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#English">English<span class="glyphicon  pull-right glyphicon-chevron-down visible-phone"></span>
                    </a>
                </div>
                <div id="English" class="accordion-body collapse">
                    <div class="accordion-inner language-footer">
                        <a href="https://www.analog.com/en/landing-pages/001/sdr/sdr-get-started.html">
                            <img data-image-source="//assets.analog.com/images/language_en.jpg" class="mobile-images" width="100%" alt="English"></a>
                    </div>
                </div>
            </div>
            <div class="accordion-group language-footer-block">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion4" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#简体中文">简体中文<span class="glyphicon  pull-right glyphicon-chevron-down visible-phone"></span>
                    </a>
                </div>
                <div id="简体中文" class="accordion-body collapse">
                    <div class="accordion-inner language-footer">
                        <a href="https://www.analog.com/cn/landing-pages/001/sdr/sdr-get-started.html">
                            <img data-image-source="//assets.analog.com/images/language_cn.jpg" class="mobile-images" width="100%" alt="简体中文"></a>
                    </div>
                </div>
            </div>
            <div class="accordion-group language-footer-block">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion4" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#日本語">日本語<span class="glyphicon  pull-right glyphicon-chevron-down visible-phone"></span>
                    </a>
                </div>
                <div id="日本語" class="accordion-body collapse">
                    <div class="accordion-inner language-footer">
                        <a href="https://www.analog.com/jp/landing-pages/001/sdr/sdr-get-started.html">
                            <img data-image-source="//assets.analog.com/images/language_jp.jpg" class="mobile-images" width="100%" alt="日本語"></a>
                    </div>
                </div>
            </div>
            <div class="accordion-group language-footer-block">
                <div class="accordion-heading">
                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion4" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#Руccкий">Руccкий<span class="glyphicon  pull-right glyphicon-chevron-down visible-phone"></span>
                    </a>
                </div>
                <div id="Руccкий" class="accordion-body collapse">
                    <div class="accordion-inner language-footer">
                        <a href="https://www.analog.com/ru/landing-pages/001/sdr/sdr-get-started.html">
                            <img data-image-source="//assets.analog.com/images/language_ru.jpg" class="mobile-images" width="100%" alt="Руccкий"></a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<!-- Mobile view navigation drawer-->

<!-- /tpl_header.php -->



<div id="dokuwiki__site" role="main" class="main-body content">
    <div class="site dokuwiki mode_show tpl_analog2014   ">
        <div class="container">

            <!-- ********** CONTENT ********** -->
            <div id="dokuwiki__content">
                <div class="pad group">

                    <div class="page group">
                        
                                                <!-- wikipage start -->
                        <div class="approval approved_yes"><span class="approval_approved">This version (<span class="approval_date">26 Jul 2019 11:20</span>) was <em>approved</em> by mhennerich.</span><span class="approval_previous">The <a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?rev=1564132771">Previously approved version</a> (26 Jul 2019 11:19) is available.<a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=diff&amp;rev2[0]=1564132771&amp;rev2[1]=1564132807&amp;difftype=sidebyside" class="approved_diff_link"><img src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/diff.png" class="approved_diff_link" alt="Diff"></a></span></div><!-- TOC START -->
<div id="dw__toc" class="dw__toc">
<h3 class="toggle open" style="cursor: pointer;"><strong><span>−</span></strong>Table of Contents</h3>
<div aria-expanded="true" style="">

<ul class="toc">
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#adrv9009_adrv9008_highly_integrated_wideband_rf_transceiver_linux_device_driver">ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#supported_devices">Supported Devices</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#evaluation_boards">Evaluation Boards</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#description">Description</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#source_code">Source Code</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#status">Status</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#files">Files</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#interrelated_device_drivers">Interrelated Device Drivers</a></div></li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#device_driver_customization">Device Driver Customization</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#stream_processor_configuration">Stream Processor Configuration</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#example_linux_device-tree_initialization">Example Linux Device-Tree Initialization</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#enabling_linux_driver_support">Enabling Linux driver support</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#adding_linux_driver_support">Adding Linux driver support</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#hardware_configuration">Hardware configuration</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#driver_testingapi">Driver testing / API</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#show_device_name">Show device name</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#enable_state_machine_controls">Enable State Machine Controls</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#channel_enablepowerdown_controls">Channel Enable/Powerdown Controls</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#local_oscillator_control_lo">Local Oscillator Control (LO)</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#frequency_hopping_mode">Frequency Hopping Mode</a></div></li>
</ul>
</li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#filter_and_signal_path_configuration">Filter and Signal Path Configuration</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#profiles">Profiles</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#rx_signal_path">RX Signal Path</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#observation_rx_signal_path">Observation RX Signal Path</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#tx_signal_path">TX Signal Path</a></div></li>
</ul>
</li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#rx_gain_control">RX Gain Control</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#loading_a_gain_table">Loading a gain table</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#gain_control_modes">Gain control modes</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#querying_or_setting_a_gain_control_mode">Querying or Setting a Gain Control Mode</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#reading_the_current_gain">Reading the current Gain</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#mgc_setting_the_current_gain">MGC setting the current Gain</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#mgc_controlling_the_gain_using_pin_control">MGC controlling the gain using pin control</a></div></li>
</ul>
</li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#tx_attenuation_control">Tx Attenuation Control</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#tx_attenuation_pin_control">Tx Attenuation Pin Control</a></div></li>
</ul>
</li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#received_strength_signal_indicator_rssi">Received Strength Signal Indicator (RSSI)</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#calibration_tracking_controls">Calibration Tracking Controls</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#arm_calibrations">ARM Calibrations</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#auxadc_reading">AuxADC Reading</a></div></li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#auxdac_writing">AuxDAC Writing</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#advanced_debug_facilities">Advanced Debug Facilities</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#runtime_device_driver_customization">Runtime Device Driver Customization</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#example_to_change_from_internal_to_external_tx_lo">Example to change from internal to external TX LO</a></div></li>
</ul>
</li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#build-in_self-test_bist">Build-In Self-Test (BIST)</a></div>
<ul class="toc">
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#bist_tone">BIST Tone</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#prbs">PRBS</a></div></li>
<li class="level3"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#loopback">Loopback</a></div></li>
</ul>
</li>
<li class="level2"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#gpio_3v3_controls">GPIO 3v3 Controls</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#low_level_register_access_via_debugfs_direct_reg_access">Low level register access via debugfs (direct_reg_access)</a></div></li>
<li class="level1"><div class="li"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#more_information">More Information</a></div></li>
</ul>
</div>
</div>
<!-- TOC END -->

<h1 class="sectionedit1" id="adrv9009_adrv9008_highly_integrated_wideband_rf_transceiver_linux_device_driver">ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver</h1>
<div class="level1">

<p>
<a href="https://wiki.analog.com/_detail/resources/eval/user-guides/adrv9009-bc-196-13-white.jpg?id=resources%3Atools-software%3Alinux-drivers%3Aiio-transceiver%3Aadrv9009" class="media" title="resources:eval:user-guides:adrv9009-bc-196-13-white.jpg"><img src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/adrv9009-bc-196-13-white.jpg" class="mediaright" title="ADRV9009" alt="ADRV9009" width="200"></a>
</p>

<p>
 The <a href="http://www.analog.com/ADRV9009" class="interwiki iw_adi" title="http://www.analog.com/ADRV9009">ADRV9009</a> is a highly integrated, radio frequency (RF) agile transceiver offering dual transmitters and receivers, integrated synthesizers, and digital signal processing functions. The IC delivers a versatile combination of the high performance and low power consumption demanded by 3G and 4G macro cell TDD base station applications. 
The receive path consists of two independent, wide bandwidth, direct conversion receivers with state-of-the-art dynamic range. The part also supports a wide-bandwidth time-shared observation path receiver for use in TDD applications. The complete receive subsystem includes automatic and manual attenuation control, dc offset correction, quadrature error correction (QEC), and digital filtering, thus eliminating the need for these functions in the digital baseband. Several auxiliary functions such as ADCs, DACs, and GPIOs for PA and RF-front-end control are also integrated. 
In addition to the autonomous AGC, it also has flexible external gain control modes, allowing significant flexibility in setting system level gain dynamically.
</p>

</div>

<h2 class="sectionedit2" id="supported_devices">Supported Devices</h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://www.analog.com/ADRV9009" class="interwiki iw_adi" title="http://www.analog.com/ADRV9009">ADRV9009</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.analog.com/ADRV9008" class="interwiki iw_adi" title="http://www.analog.com/ADRV9008">ADRV9008</a></div>
</li>
</ul>

</div>

<h2 class="sectionedit3" id="evaluation_boards">Evaluation Boards</h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <a href="http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADRV9008-9009.html" class="interwiki iw_adi" title="http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADRV9008-9009.html"> ADRV9009-W/PCBZ</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADRV9008-9009.html" class="interwiki iw_adi" title="http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADRV9008-9009.html"> ADRV9008-1W/PCBZ</a> </div>
</li>
<li class="level1"><div class="li"> <a href="http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADRV9008-9009.html" class="interwiki iw_adi" title="http://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADRV9008-9009.html"> ADRV9008-2W/PCBZ</a> </div>
</li>
</ul>

</div>

<h2 class="sectionedit4" id="description">Description</h2>
<div class="level2">

<p>
This is a Linux industrial I/O (<a href="https://wiki.analog.com/software/linux/docs/iio/iio" class="wikilink1" title="software:linux:docs:iio:iio">IIO</a>) subsystem driver, targeting RF Transceivers.
The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc).
See <a href="https://wiki.analog.com/software/linux/docs/iio/iio" class="wikilink1" title="software:linux:docs:iio:iio">IIO</a> for more information.
</p>

</div>

<h1 class="sectionedit5" id="source_code">Source Code</h1>
<div class="level1">

</div>

<h2 class="sectionedit6" id="status">Status</h2>
<div class="level2">
<div class="table sectionedit7"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Source </th><th class="col1"> Mainlined? </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.c">git</a> </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.c">No</a> </td>
	</tr>
</tbody></table></div>

</div>

<h2 class="sectionedit8" id="files">Files</h2>
<div class="level2">
<div class="table sectionedit9"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.c"> drivers/iio/adc/adrv9009.c</a> </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009_conv.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009_conv.c"> drivers/iio/adc/adrv9009_conv.c</a> </td>
	</tr>
	<tr class="row3">
		<td class="col0"> include </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.h" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009.h"> drivers/iio/adc/adrv9009.h</a> </td>
	</tr>
	<tr class="row4">
		<td class="col0"> Talise <abbr title="Application Programming Interface">API</abbr> driver </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/talise" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/talise"> drivers/iio/adc/talise</a> </td>
	</tr>
</tbody></table></div>

</div>

<h3 class="sectionedit10" id="interrelated_device_drivers">Interrelated Device Drivers</h3>
<div class="level3">

</div>

<h4 id="receive_axi-adc_driver">Receive AXI-ADC driver</h4>
<div class="level4">
<div class="table sectionedit11"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/cf_axi_adc_core.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/cf_axi_adc_core.c"> drivers/iio/adc/cf_axi_adc_core.c</a> </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/cf_axi_adc_ring_stream.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/cf_axi_adc_ring_stream.c"> drivers/iio/adc/cf_axi_adc_ring_stream.c</a> </td>
	</tr>
	<tr class="row3">
		<td class="col0"> include </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/cf_axi_adc.h" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/cf_axi_adc.h"> drivers/iio/adc/cf_axi_adc.h</a> </td>
	</tr>
</tbody></table></div>

</div>

<h4 id="transmit_axi-dacdds_driver">Transmit AXI-DAC / DDS driver</h4>
<div class="level4">
<div class="table sectionedit12"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/frequency/cf_axi_dds.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/frequency/cf_axi_dds.c"> drivers/iio/frequency/cf_axi_dds.c</a> </td>
	</tr>
	<tr class="row2">
		<td class="col0"> include </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/frequency/cf_axi_dds.h" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/frequency/cf_axi_dds.h"> drivers/iio/frequency/cf_axi_adc.h</a> </td>
	</tr>
</tbody></table></div>

</div>

<h4 id="axi_jesd204b_hdl_driver">AXI JESD204B HDL driver</h4>
<div class="level4">
<div class="table sectionedit13"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_jesd204_rx.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_jesd204_rx.c"> drivers/iio/jesd204/axi_jesd204_rx.c</a> </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_jesd204_tx.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_jesd204_tx.c"> drivers/iio/jesd204/axi_jesd204_tx.c</a> </td>
	</tr>
</tbody></table></div>

</div>

<h4 id="axi_jesd204b_gt_gigabit_tranceiver_hdl_driver_xilinxaltera-intel">AXI JESD204B GT (Gigabit Tranceiver) HDL driver (XILINX/ALTERA-INTEL)</h4>
<div class="level4">
<div class="table sectionedit14"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign"> driver  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_adxcvr.c" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_adxcvr.c"> drivers/iio/jesd204/axi_adxcvr.c</a> </td>
	</tr>
</tbody></table></div>

</div>

<h1 class="sectionedit15" id="device_driver_customization">Device Driver Customization</h1>
<div class="level1">

<p>
Please follow the link here for detailed options and examples:
</p>
<ul>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009-customization" class="wikilink1" title="resources:tools-software:linux-drivers:iio-transceiver:adrv9009-customization">ADRV9009/ADRV9008 Device Driver Customization</a></div>
</li>
</ul>

</div>

<h1 class="sectionedit16" id="stream_processor_configuration">Stream Processor Configuration</h1>
<div class="level1">

<p>
<strong>What is a stream processor and what is the purpose of that?</strong>
</p>

<p>
The stream processor is a processor within the Talise device tasked with performing a series of configuration tasks upon an external request. Upon a request from the user, the stream processor performs a series of defined actions defined in the image loaded into the stream during device initialization.
The stream processor therefore has “streams” (series of tasks) for:
</p>
<ul>
<li class="level1"><div class="li"> Tx1 Enable/Tx1 Disable, Tx2 Enable/Tx2 Disable</div>
</li>
<li class="level1"><div class="li"> Rx1 Enable/Rx1 Disable, Rx2 Enable/Rx2 Disable</div>
</li>
<li class="level1"><div class="li"> ORx1 Enable/ORx1 Disable, ORx2 Enable/ORx2 Disable</div>
</li>
</ul>

<p>
The stream is not limited to path enabling events and can also react to other events such as a <abbr title="General Purpose Input/Output">GPIO</abbr> input signal. The stream processor image needs to be changed with every different configuration. It is recommended to use TES <abbr title="Graphical User Interface">GUI</abbr> and generate stream file for required configuration.
</p>

<p>
This was added to make sure the signal path is not disrupted when ARM crashes and still the link is available with reduced performance as tracking calibrations are not running.
</p>

<p>
The stream binary <code>TaliseStream.bin</code> must be stored in the /lib/firmware folder, or compiled into the kernel using the CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWARE config options. Multiple stream binaries can be added. However a unique name must be given. The stream binary loaded during driver probe can be specified using following device tree property:
</p>

<p>
stream-firmware-name = “TaliseStreamXYZ.bin”;
</p>

<p>
In case no stream is specified or loaded, the driver will continue to use the standard <code>TaliseStream.bin</code> file. 
</p>
<div class="table sectionedit17"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> Steam </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/firmware/TaliseStream.bin" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/firmware/TaliseStream.bin"> firmware/TaliseStream.bin </a> </td>
	</tr>
</tbody></table></div>

</div>

<h1 class="sectionedit18" id="example_linux_device-tree_initialization">Example Linux Device-Tree Initialization</h1>
<div class="level1">

<p>
The ADRV9009 driver is a spi-bus driver and can currently only be instantiated via device tree.
</p>

<p>
Required devicetree properties:
</p>
<ul>
<li class="level1"><div class="li"> compatible: Should always be either “adrv9009”, “adrv9008-1” or “adrv9008-2”</div>
</li>
<li class="level1"><div class="li"> reg: <abbr title="Serial Peripheral Interface">SPI</abbr> slave select number</div>
</li>
</ul>
<div class="table sectionedit19"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Function </th><th class="col1"> File </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign"> ADRV9009 Device Tree  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/adi-adrv9009.dtsi" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/adi-adrv9009.dtsi"> adi-adrv9009.dtsi</a> </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign"> ADRV9009 Device Tree  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts"> zynqmp-zcu102-rev10-adrv9009.dts</a> </td>
	</tr>
	<tr class="row3">
		<td class="col0 leftalign"> ADRV9008-1 Device Tree  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9008-1.dts" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9008-1.dts"> zynqmp-zcu102-rev10-adrv9008-1.dts</a> </td>
	</tr>
	<tr class="row4">
		<td class="col0 leftalign"> ADRV9008-2 Device Tree  </td><td class="col1"> <a href="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9008-2.dts" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9008-2.dts"> zynqmp-zcu102-rev10-adrv9008-2.dts</a> </td>
	</tr>
</tbody></table></div>

</div>

<h1 class="sectionedit20" id="enabling_linux_driver_support">Enabling Linux driver support</h1>
<div class="level1">

<p>
Configure kernel with “make menuconfig” (alternatively use “make xconfig” or “make qconfig”)
</p>
<div class="wrap_round wrap_help plugin_wrap">
<p>
The ADRV9009 driver depends on <strong>CONFIG_<abbr title="Serial Peripheral Interface">SPI</abbr></strong>
</p>
</div>
</div>

<h1 class="sectionedit23" id="adding_linux_driver_support">Adding Linux driver support</h1>
<div class="level1">

<p>
Configure kernel with “make menuconfig” (alternatively use “make xconfig” or
“make qconfig”)
</p>
<pre class="notranslate code">Linux Kernel Configuration
	Device Drivers  ---&gt;
	&lt;*&gt;     Industrial I/O support ---&gt;
	    --- Industrial I/O support
	    -*-   Enable ring buffer support within IIO
	    -*-     Industrial I/O lock free software ring
	    -*-   Enable triggered sampling support

	          *** Analog to digital converters ***
	    [--snip--]

		-*- Analog Devices High-Speed AXI ADC driver core
		&lt; &gt; Analog Devices AD9361, AD9364 RF Agile Transceiver driver
		&lt; &gt; Analog Devices AD9371 RF Transceiver driver
		&lt;*&gt; Analog Devices ADRV9009/ADRV9008 RF Transceiver driver
		&lt; &gt; Analog Devices AD6676 Wideband IF Receiver driver
		&lt; &gt; Analog Devices AD9467, AD9680, etc. high speed ADCs
		&lt; &gt; Analog Devices Motor Control (AD-FMCMOTCON) drivers

	    [--snip--]
	    

	Frequency Synthesizers DDS/PLL  ---&gt;
    		Direct Digital Synthesis  ---&gt;
	 		&lt;*&gt; Analog Devices CoreFPGA AXI DDS driver
		Clock Generator/Distribution  ---&gt;	
			&lt; &gt; Analog Devices AD9508 Clock Fanout Buffer                 
			&lt; &gt; Analog Devices AD9523 Low Jitter Clock Generator          
			&lt;*&gt; Analog Devices AD9528 Low Jitter Clock Generator          
			&lt; &gt; Analog Devices AD9548 Network Clock Generator/Synchronizer
			&lt; &gt; Analog Devices AD9517 12-Output Clock Generator  	

	&lt;*&gt;   JESD204 High-Speed Serial Interface Support  ---&gt;
		--- JESD204 High-Speed Serial Interface Support  
		&lt; &gt;   Altera Arria10 JESD204 PHY Support         
		&lt;*&gt;   Analog Devices AXI ADXCVR PHY Support      
		&lt; &gt;   Generic AXI JESD204B configuration driver  
		&lt;*&gt;   Analog Devices AXI JESD204B TX Support     
		&lt;*&gt;   Analog Devices AXI JESD204B RX Support  
			
	</pre>

</div>

<h1 class="sectionedit24" id="hardware_configuration">Hardware configuration</h1>
<div class="level1">

</div>

<h1 class="sectionedit25" id="driver_testingapi">Driver testing / API</h1>
<div class="level1">

</div>
<div class="plugin_include_content plugin_include__software:linux:docs:iio:iio_snippets">
<div class="level1">

<p>
Each and every IIO device, typically a hardware chip, has a device folder under /sys/bus/iio/devices/iio:deviceX.
Where X is the IIO index of the device. Under every of these directory folders reside a set of files, depending on the characteristics and features of the hardware device in question. 
These files are consistently generalized and documented in the IIO ABI documentation. In order to determine which IIO deviceX corresponds to which hardware device, the user can read the name file /sys/bus/iio/devices/iio:deviceX/name. In case the sequence in which the iio device drivers are loaded/registered is constant, the numbering is constant and may be known in advance.
</p>

</div>
<div class="inclmeta level1">
	<abbr class="published" title="2011-03-02T15:16:14Z">02 Mar 2011 15:16</abbr>
</div>
</div>
<div class="level1">
<div class="wrap_top wrap_tip wrap_round wrap_box plugin_wrap" style="width: 60%;">
<p>
<strong>TIP:</strong>
An example program which uses the interface can be found here:
</p>
<ul>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-software/iio_oscilloscope" class="wikilink1" title="resources:tools-software:linux-software:iio_oscilloscope">IIO Oscilloscope</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-software/adrv9009_plugin" class="wikilink1" title="resources:tools-software:linux-software:adrv9009_plugin">ADRV9009 Control IIO Scope Plugin</a></div>
</li>
</ul>
</div>
<p>
<br>

</p>

<p>
<em class="u"><strong>General attribute naming convention:</strong></em><br>

</p>
<div class="table sectionedit30"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> IIO sysfs attribute naming prefix </th><th class="col1"> Target </th>
	</tr>
	<tr class="row1">
		<th class="col0"> Transceiver </th><td class="col1"></td>
	</tr>
	</thead>
	<tbody><tr class="row2">
		<td class="col0"> in_voltage0_[…] </td><td class="col1"> RX1 </td>
	</tr>
	<tr class="row3">
		<td class="col0"> in_voltage1_[…] </td><td class="col1"> RX2 </td>
	</tr>
	<tr class="row4">
		<td class="col0"> in_voltage2_[…] </td><td class="col1"> Observation RX1 </td>
	</tr>
	<tr class="row5">
		<td class="col0"> in_voltage3_[…] </td><td class="col1"> Observation RX2 </td>
	</tr>
	<tr class="row6">
		<td class="col0"> out_voltage0_[…] </td><td class="col1"> TX1 </td>
	</tr>
	<tr class="row7">
		<td class="col0"> out_voltage1_[…] </td><td class="col1"> TX2 </td>
	</tr>
	<tr class="row8">
		<td class="col0"> out_altvoltage0_[…] </td><td class="col1"> TRX LO </td>
	</tr>
	<tr class="row9">
		<td class="col0"> out_altvoltage1_[…] </td><td class="col1"> AUX LO </td>
	</tr>
	<tr class="row10">
		<th class="col0"> Auxilary Converters </th><td class="col1"></td>
	</tr>
	<tr class="row11">
		<td class="col0"> in_voltage4_[…] </td><td class="col1"> AUX ADC0 </td>
	</tr>
	<tr class="row12">
		<td class="col0"> in_voltage5_[…] </td><td class="col1"> AUX ADC1 </td>
	</tr>
	<tr class="row13">
		<td class="col0"> in_voltage6_[…] </td><td class="col1"> AUX ADC2 </td>
	</tr>
	<tr class="row14">
		<td class="col0"> in_voltage7_[…] </td><td class="col1"> AUX ADC3 </td>
	</tr>
	<tr class="row15">
		<td class="col0"> out_voltage2_[…] </td><td class="col1"> AUX DAC0 </td>
	</tr>
	<tr class="row16">
		<td class="col0"> out_voltage3_[…] </td><td class="col1"> AUX DAC1 </td>
	</tr>
	<tr class="row17">
		<td class="col0"> out_voltage4_[…] </td><td class="col1"> AUX DAC2 </td>
	</tr>
	<tr class="row18">
		<td class="col0"> out_voltage5_[…] </td><td class="col1"> AUX DAC3 </td>
	</tr>
	<tr class="row19">
		<td class="col0"> out_voltage6_[…] </td><td class="col1"> AUX DAC4 </td>
	</tr>
	<tr class="row20">
		<td class="col0"> out_voltage7_[…] </td><td class="col1"> AUX DAC5 </td>
	</tr>
	<tr class="row21">
		<td class="col0"> out_voltage8_[…] </td><td class="col1"> AUX DAC6 </td>
	</tr>
	<tr class="row22">
		<td class="col0"> out_voltage9_[…] </td><td class="col1"> AUX DAC7 </td>
	</tr>
	<tr class="row23">
		<td class="col0"> out_voltage10_[…] </td><td class="col1"> AUX DAC8 </td>
	</tr>
	<tr class="row24">
		<td class="col0"> out_voltage11_[…] </td><td class="col1"> AUX DAC9 </td>
	</tr>
	<tr class="row25">
		<td class="col0"> out_voltage12_[…] </td><td class="col1"> AUX DAC10 </td>
	</tr>
	<tr class="row26">
		<td class="col0"> out_voltage13_[…] </td><td class="col1"> AUX DAC11 </td>
	</tr>
</tbody></table></div>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/&gt; <strong>cd /sys/bus/iio/devices/</strong>
root:/sys/bus/iio/devices&gt; ls
iio:device0  iio:device3  iio:device2  iio:device3  iio:device4  iio:device5  iio:device6

root:/sys/bus/iio/devices&gt; <strong>cd iio:device3</strong>

root@analog:/sys/bus/iio/devices/iio:device3# ls -al
total 0
drwxr-xr-x 3 root root     0 May 16 14:21 .
drwxr-xr-x 5 root root     0 May 16 14:21 ..
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate_frm_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate_rx_phase_correction_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate_rx_qec_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate_tx_lol_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate_tx_lol_ext_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 calibrate_tx_qec_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 dev
-rw-rw-rw- 1 root root  4096 May 16 14:22 ensm_mode
-rw-rw-rw- 1 root root  4096 May 16 14:22 ensm_mode_available
-rw-rw-rw- 1 root root 32768 May 16 14:22 gain_table_config
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_temp0_input
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_gain_control_mode
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_gain_control_mode_available
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_gain_control_pin_mode_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_hardwaregain
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_hd2_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_powerdown
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_quadrature_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_rf_bandwidth
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage0_sampling_frequency
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_gain_control_mode
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_gain_control_mode_available
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_gain_control_pin_mode_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_hardwaregain
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_hd2_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_powerdown
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_quadrature_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_rf_bandwidth
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage1_sampling_frequency
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_hardwaregain
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_powerdown
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_quadrature_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_rf_bandwidth
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_rf_port_select
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_rf_port_select_available
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage2_sampling_frequency
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_hardwaregain
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_powerdown
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_quadrature_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_rf_bandwidth
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_rf_port_select
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_rf_port_select_available
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage3_sampling_frequency
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage4_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage4_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage4_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage5_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage5_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage5_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage6_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage6_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage6_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage7_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage7_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 in_voltage7_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 name
lrwxrwxrwx 1 root root     0 May 16 14:22 of_node -&gt; ../../../../../../../../firmware/devicetree/base/amba/spi@ff040000/adrv9009-phy@1
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_altvoltage0_TRX_LO_frequency
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_altvoltage0_TRX_LO_frequency_hopping_mode_enable
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_altvoltage1_AUX_OBS_RX_LO_frequency
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_atten_control_pin_mode_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_hardwaregain
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_lo_leakage_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_pa_protection_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_powerdown
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_quadrature_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage0_rf_bandwidth
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage10_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage10_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage10_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage11_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage11_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage11_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage12_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage12_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage13_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage13_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_atten_control_pin_mode_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_hardwaregain
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_lo_leakage_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_pa_protection_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_powerdown
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_quadrature_tracking_en
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage1_rf_bandwidth
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage2_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage2_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage2_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage3_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage3_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage3_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage4_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage4_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage4_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage5_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage5_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage5_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage6_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage6_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage6_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage7_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage7_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage7_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage8_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage8_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage8_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage9_offset
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage9_raw
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage9_scale
-rw-rw-rw- 1 root root  4096 May 16 14:22 out_voltage_sampling_frequency
drwxrwxrwx 2 root root     0 May 16 14:22 power
-rw-rw-rw- 1 root root  8192 May 16 14:22 profile_config
lrwxrwxrwx 1 root root     0 May 16 14:22 subsystem -&gt; ../../../../../../../../bus/iio
-rw-rw-rw- 1 root root  4096 May 16 14:22 uevent
root@analog:/sys/bus/iio/devices/iio:device3#
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit33" id="show_device_name">Show device name</h2>
<div class="level2">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat name</strong>
adrv9009-phy
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit36" id="enable_state_machine_controls">Enable State Machine Controls</h2>
<div class="level2">

<p>
The ADRV9009 transceiver includes an Enable State Machine (ENSM), allowing real time control over the current state of the device. 
The ENSM has two possible control methods – <abbr title="Serial Peripheral Interface">SPI</abbr> control (writing ensm_mode), and pin control.
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat ensm_mode_available</strong> 
radio_on radio_off
</pre>
<p></p>
</div><div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat ensm_mode</strong>
radio_on

root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo radio_off &gt; ensm_mode</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat ensm_mode</strong>
radio_off
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit41" id="channel_enablepowerdown_controls">Channel Enable/Powerdown Controls</h2>
<div class="level2">

<p>
For use cases where pin control mode is not used or required, these attributes can be used to
enable/disable the Rx/ORx/Tx signal paths while in the ENSM radio_on state.  
Rx and ORx channels <strong>can not</strong> be enabled at the same time, since they share the same converter. 
</p>

<p>
Writing 0, N or 1, Y to the below attributes either disables or enables the corresponding channel powerdown option.
</p>
<ul>
<li class="level1"><div class="li"> in_voltage0_powerdown</div>
</li>
<li class="level1"><div class="li"> in_voltage1_powerdown</div>
</li>
<li class="level1"><div class="li"> in_voltage2_powerdown</div>
</li>
<li class="level1"><div class="li"> in_voltage3_powerdown</div>
</li>
<li class="level1"><div class="li"> out_voltage0_powerdown</div>
</li>
<li class="level1"><div class="li"> out_voltage1_powerdown</div>
</li>
</ul>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_powerdown </strong>
0
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 1 &gt; in_voltage0_powerdown </strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_powerdown _en</strong>
1
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit44" id="local_oscillator_control_lo">Local Oscillator Control (LO)</h2>
<div class="level2">

<p>
The ADRV9009 contains two fractional-N PLLs <strong>RF <abbr title="Phase Locked Loop">PLL</abbr></strong> and <strong>AUX <abbr title="Phase Locked Loop">PLL</abbr></strong>. The <strong>RF <abbr title="Phase Locked Loop">PLL</abbr></strong> generate the RF LO used by the transmitter &amp; receiver, and observation receiver.
The LO mux controlled via <code>in_voltage2_rf_port_select</code> allows either the <strong>RF <abbr title="Phase Locked Loop">PLL</abbr></strong> or the <strong>AUX <abbr title="Phase Locked Loop">PLL</abbr></strong> to provide the local oscillator signal source for the observation receiver ORx1 and ORx2 mixers. 
The tuning range supported by this driver covers 75MHz to 6GHz. The lower end cannot go below TxProfile or RxProfile RFBW/2.
</p>
<div class="table sectionedit45"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Attribute </th><th class="col1"> <abbr title="Phase Locked Loop">PLL</abbr> Name </th><th class="col2"> Source Target </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> out_altvoltage0_TRX_LO_frequency </td><td class="col1"> RF <abbr title="Phase Locked Loop">PLL</abbr> </td><td class="col2"> RX1, RX2, TX1, TX2, ORX1, ORX2 </td>
	</tr>
	<tr class="row2">
		<td class="col0"> out_altvoltage1_AUX_OBS_RX_LO_frequency</td><td class="col1"> AUX <abbr title="Phase Locked Loop">PLL</abbr> </td><td class="col2"> ORX1, ORX2 </td>
	</tr>
</tbody></table></div>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage1_TX_LO_frequency</strong>
2400000000
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 2450000000 &gt;  out_altvoltage0_TRX_LO_frequency</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage0_TRX_LO_frequency</strong>
2450000000
</pre>
<p></p>
</div><div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage1_TX_LO_frequency</strong>
2450000000
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit50" id="frequency_hopping_mode">Frequency Hopping Mode</h3>
<div class="level3">

<p>
The RF <abbr title="Phase Locked Loop">PLL</abbr> in ADRV9009 has the ability to change frequency quickly to another predetermined LO frequency set by the user via the customization interface.
The frequency hopping mode can be enabled using the <code>out_altvoltage0_TRX_LO_frequency_hopping_mode_enable</code> channel attribute.
</p>
<ul>
<li class="level1"><div class="li"> out_altvoltage0_TRX_LO_frequency_hopping_mode_enable</div>
</li>
</ul>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage0_TRX_LO_frequency_hopping_mode_enable</strong>
0
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 1 &gt; out_altvoltage0_TRX_LO_frequency_hopping_mode_enable</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage0_TRX_LO_frequency_hopping_mode_enable</strong>
1
</pre>
<p></p>
</div>
</div>

<h4 id="next_hop_frequency">Next Hop Frequency</h4>
<div class="level4">

<p>
The RF <abbr title="Phase Locked Loop">PLL</abbr> in ADRV9009 has the ability to change frequency quickly to another predetermined LO frequency set by the user via this attribute. There are two use cases through which a user can control frequency hopping.
<strong><abbr title="General Purpose Input/Output">GPIO</abbr></strong> mode, and <strong><abbr title="Application Programming Interface">API</abbr></strong> mode. In order to use <abbr title="Application Programming Interface">API</abbr> mode device tree attribute: <em>adi,fhm-mode-fhm-trigger-mode</em> must be set to 1, in case it's set to 0 <abbr title="General Purpose Input/Output">GPIO</abbr> mode is used and <em>adi,fhm-config-fhm-gpio-pin</em> must be in the range of 0..15.
</p>
<ul>
<li class="level1"><div class="li"> out_altvoltage0_TRX_LO_frequency_hopping_mode</div>
</li>
</ul>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage0_TRX_LO_frequency_hopping_mode</strong>
2400000000
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 2460000000 &gt; out_altvoltage0_TRX_LO_frequency_hopping_mode</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_altvoltage0_TRX_LO_frequency_hopping_mode</strong>
2460000000
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit55" id="filter_and_signal_path_configuration">Filter and Signal Path Configuration</h2>
<div class="level2">

</div>

<h3 class="sectionedit56" id="profiles">Profiles</h3>
<div class="level3">

<p>
ADRV9009 uses profiles to designate different device configuration settings for the Tx/Rx/ORx channels. When selecting a profile, note that Rx1 and Rx2 use the same profile; Tx1 and Tx2 use the same profile; ORx1 and ORx2 use the same profile. The profile dictates how the digital filters, analog filters, clock rates, and clock dividers are configured in the device. Some specific parameters set by profiles include the IQ data rate, ADC clock rate, analog filter corners, FIR filter coefficients, and interpolation/decimation factors in the half band filters. 
Several profiles can be examined in the ADRV9009 Transceiver Evaluation Software for given device clock frequencies. If the desired profile exists in the software, it is recommended to setup the desired profile in and use the data structure values generated by the “Create Config.c File” button for the Tx/Rx/ORx profile data structures. Custom profiles can be generated using other <abbr title="Analog Devices, Inc.">ADI</abbr> software tools not described here <a href="https://www.analog.com/en/design-center/landing-pages/001/transceiver-evaluation-software.html" class="urlextern" target="_blank" title="https://www.analog.com/en/design-center/landing-pages/001/transceiver-evaluation-software.html" rel="nofollow noopener">MATLAB Profile/Filter Generator for ADRV9009</a>.
</p>

</div>

<h4 id="loading_a_profile">Loading a Profile</h4>
<div class="level4">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat Tx_BW200_IR245p76_Rx_BW200_OR245p76_ORx_BW200_OR245p76_DC245p76.txt &gt; profile_config</strong> 
root@analog:/sys/bus/iio/devices/iio:device3# 
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit59" id="rx_signal_path">RX Signal Path</h3>
<div class="level3">

<p>
The ADRV9009 receiver contains all blocks necessary to receive RF signals and convert them to digital data usable by a baseband processor (BBP). Each receiver can be configured as a direct conversion system that supports up to 200MHz bandwidth. Each receiver contains a programmable attenuator stage, followed by matched in-phase (I) and quadrature (Q) mixers that down convert received signals to baseband for digitization. 
Gain control can be achieved by using the on-chip AGC or by letting the BBP make gain adjustments in a manual gain control mode. Performance is optimized by mapping each gain control setting to specific attenuation levels at each adjustable gain block in the receive signal path. Additionally, each channel contains independent quadrature error correction capability, dc offset tracking, and all circuitry necessary for self calibration. 
The receivers include ADCs and adjustable sample rates that produce data streams from the received signals. The signals can be conditioned further by a series of decimation filters and a programmable FIR filter with additional decimation settings. The sample rate of each digital filter block is adjustable by changing decimation factors to produce the desired output data rate. 
</p>

</div>

<h4 id="querying_the_rx_sample_rate_and_primary_signal_bandwidth">Querying the RX Sample Rate and Primary Signal Bandwidth</h4>
<div class="level4">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_sampling_frequency</strong>
122880000
root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat in_voltage0_rf_bandwidth</strong> 
100000000
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit62" id="observation_rx_signal_path">Observation RX Signal Path</h3>
<div class="level3">

<p>
The ADRV9009 contains an independent DPD observation receiver (ORx) front-end with 2 multiplexed inputs and a common digital back-end that is shared with the traffic receiver. The innovative configuration enables a highly efficient shared Rx/ORx mode where the device can support fast switching between Rx and ORx mode in TDD applications. The ORx shares the common frequency synthesizer with the transmitter. The ORx is a direct conversion system that contains a programmable attenuator stage, followed by matched in-phase (I) and quadrature (Q) mixers, baseband filters and ADCs. 
The continuous-time sigma-delta ADCs have inherent anti-aliasing which reduces the RF filtering requirement. 
The ADC outputs can be conditioned further by a series of decimation filters and a programmable FIR filter with additional decimation settings. The sample rate of each digital filter block is adjustable by changing decimation factors to produce the desired output data rate.
</p>

</div>

<h4 id="querying_the_orx_sample_rate">Querying the ORx Sample Rate</h4>
<div class="level4">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat in_voltage2_sampling_frequency</strong> 
245760000
root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat in_voltage2_rf_bandwidth</strong>
200000000
</pre>
<p></p>
</div>
</div>

<h4 id="setting_the_observation_path_lo_source">Setting the Observation Path LO Source</h4>
<div class="level4">

<p>
This attribute sets the LO source for ORx to RFLO or AuxLO, but the setting does not take effect until the ORx rising edge to power up the
ORx channel(s). If the LO source is changed while ORx is powered up, the
LO source will not take effect until ORx is disabled and re-enabled.  This is valid when using pins to set the LO source and control when ORx is enabled as well.
</p>
<ul>
<li class="level1"><div class="li">OBS_TX_LO Selects RF <abbr title="Phase Locked Loop">PLL</abbr> </div>
</li>
<li class="level1"><div class="li">OBS_AUX_LO Selects AUX <abbr title="Phase Locked Loop">PLL</abbr> </div>
</li>
</ul>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat in_voltage_rf_port_select_available</strong> 
OBS_TX_LO  OBS_AUX_LO
root@analog:/sys/bus/iio/devices/iio:device3# <strong>echo OBS_TX_LO  &gt; in_voltage2_rf_port_select</strong>

root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat in_voltage2_rf_port_select</strong>
OBS_TX_LO  
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit67" id="tx_signal_path">TX Signal Path</h3>
<div class="level3">

<p>
The ADRV9009 transmitter section consists of two identical and independently controlled channels that provide all digital processing, mixed-signal, and RF blocks necessary to implement a direct conversion system while sharing a common frequency synthesizer. The digital data from the JESD204B lanes pass through a fully programmable 128-tap FIR filter with variable interpolation rates. The FIR output is sent to a series of interpolation filters that provide additional filtering and interpolation prior to reaching the DAC. Each 14-bit DAC has an adjustable sample rate. 
When converted to baseband analog signals, the I and Q signals are filtered to remove sampling artifacts and fed to the upconversion mixers. Each transmit chain provides a wide attenuation adjustment range with fine granularity to help designers optimize signal-to-noise ratio (SNR).
</p>

</div>

<h4 id="querying_the_tx_sample_rate_and_primary_signal_bandwidth">Querying the TX Sample Rate and Primary Signal Bandwidth</h4>
<div class="level4">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_voltage_sampling_frequency</strong>
245760000
root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat out_voltage0_rf_bandwidth</strong> 
75000000
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit70" id="rx_gain_control">RX Gain Control</h2>
<div class="level2">

<p>
The ADRV9009 Receivers (Rx1, Rx2) feature Automatic and Manual gain control modes allowing for flexible gain control in a wide array of applications. Automatic Gain Control (AGC) allows for receivers to autonomously adjust the receiver gain depending on variations of the input signal, such as the onset of a strong interferer that can overload the receiver data path. It controls the gain of Talise based on the state of certain signals that are available as inputs to the AGC block. The AGC has the ability to control Talise gain with very fine resolution if required. The receivers are also capable of operating in Manual Gain Control (MGC) mode where changes in gain are initiated by the Baseband Processor (BBP). The Talise gain control blocks are configured by means of the <abbr title="Application Programming Interface">API</abbr> data structures and several <abbr title="Application Programming Interface">API</abbr> functions exist to allow for user interaction with the gain control mechanisms. 
There are three main gain control modes available for the Talise receivers – Manual Gain Control (MGC), Automatic Gain Control (AGC), Automatic Gain Control Fast (AGCFast). 
</p>

<p>
The default gain tables can be found in the talise_user.c file, and are loaded by default.
Custom gain tables can be loaded automatically during driver probe or anytime later via the gain_table_config sysfs attribute.
Tables must be stored in the /lib/firmware folder, or compiled into the kernel using the CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWARE config options.
The table loaded during driver probe can be specified using following device tree property:
</p>

<p>
<strong>adi,gaintable-name</strong> = “adrv9009_std_gaintable”;
</p>

<p>
In case no table is specified or loaded, the driver will continue to use the provided standard gain tables.
</p>

<p>
Gain tables are stored in a human readable file, with the format specified below.
</p>

<p>
Example: <a href="http://github.com/analogdevicesinc/linux/blob/master/firmware/adrv9009_std_gaintable" class="interwiki iw_linux_github" title="http://github.com/analogdevicesinc/linux/blob/master/firmware/adrv9009_std_gaintable"> adrv9009_std_gaintable</a>
</p>
<pre class="notranslate code">&lt;list&gt;
 &lt;gaintable ADRV9009 type=FULL dest=[1|2|3|4|5] start=FREQUENCY1_Hz end=FREQUENCY2_Hz&gt;
  gain_in_mdB, rxFeGain, extControl, adcTiaGain, digGain[, phaseOffset] /* index 255 */
  gain_in_mdB, rxFeGain, extControl, adcTiaGain, digGain[, phaseOffset] /* index 254 */
  gain_in_mdB, rxFeGain, extControl, adcTiaGain, digGain[, phaseOffset] /* index 253 */
  gain_in_mdB, rxFeGain, extControl, adcTiaGain, digGain[, phaseOffset] /* index 252 */
 
 …
 &lt;/gaintable&gt;

...

&lt;/list&gt;</pre>

<p>
<strong>Assumptions:</strong><br>

</p>
<ul>
<li class="level1"><div class="li"> Gain tables must be monotonic</div>
</li>
<li class="level1"><div class="li"> The format of the columns in the Rx gain table rows are: {  gain_in_mdB, rxFeGain, extControl, adcTiaGain, digGain[, phaseOffset }</div>
</li>
<li class="level1"><div class="li"> The format of the columns in the ORx gain table rows are: {  gain_in_mdB, rxFeGain, extControl, adcTiaGain, digGain }</div>
</li>
<li class="level1"><div class="li"> gain_in_mdB: is the absolute Gain in mdB (signed int format)</div>
</li>
<li class="level1"><div class="li"> end must be greater than start frequency (in Hz)</div>
</li>
<li class="level1"><div class="li"> There must be sufficient tables provided to support the entire used tuning range</div>
</li>
<li class="level1"><div class="li"> dest specifies the targeted RX. (0 = RX1, 1=RX2, 2=RX1 and RX2, 3=ORX1, 4=ORX2, 5=ORX1 and ORX2)</div>
</li>
</ul>

</div>

<h3 class="sectionedit71" id="loading_a_gain_table">Loading a gain table</h3>
<div class="level3">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/bus/iio/devices/iio:device3# <strong>ls /lib/firmware/ad9</strong>*
adrv9009_std_gaintable

root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat /lib/firmware/adrv9009_std_gaintable &gt; gain_table_config</strong>
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit74" id="gain_control_modes">Gain control modes</h3>
<div class="level3">

<p>
The ADRV9009 Rx supports four modes of gain control. These modes are described in brief below:
</p>
<div class="table sectionedit75"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Mode </th><th class="col1"> Description </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> Manual Gain Control (MGC) </td><td class="col1"> Provides the user full control over the current gain index. In MGC, the gain index can be controlled in two ways: through <abbr title="Application Programming Interface">API</abbr> commands and through <abbr title="General Purpose Input/Output">GPIO</abbr> signaling. </td>
	</tr>
	<tr class="row2">
		<td class="col0"> Automatic Gain Control (AGC) </td><td class="col1"> The AGC will determine when gain changes should be made. There are several configurations that can be used in AGC. Examples include the option to reduce gain as soon as an overrange has been detected (fast attack mode), change gain (if necessary) only at the expiry of a variable length counter (AGC gain update counter, operating without fast attack), synchronization of the counter to an external pulse (AGC enable sync pulse), and others. . </td>
	</tr>
	<tr class="row3">
		<td class="col0"> Hybrid Mode </td><td class="col1"> </td>
	</tr>
</tbody></table></div>
<div class="wrap_top wrap_tip wrap_round wrap_box plugin_wrap" style="width: 100%;">
<p>
<strong>TIP:</strong>
</p>
<ul>
<li class="level1"><div class="li"> Automatic Gain Control (AGC) and Hybrid Mode are only available on RX1 and RX2 </div>
</li>
</ul>
</div>
<p>
<br>

</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/bus/iio/devices/iio:device3# <strong>cat in_voltage_gain_control_mode_available</strong> 
manual fast_attack slow_attack hybrid
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit80" id="querying_or_setting_a_gain_control_mode">Querying or Setting a Gain Control Mode</h3>
<div class="level3">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_gain_control_mode</strong>
manual 
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo slow_attack &gt; in_voltage0_gain_control_mode</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_gain_control_mode</strong>
slow_attack 
</pre>
<p></p>
</div><div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage1_gain_control_mode</strong>
manual 
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit85" id="reading_the_current_gain">Reading the current Gain</h3>
<div class="level3">

<p>
Supported in all available Gain control modes
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_hardwaregain</strong>
30.000000 dB
</pre>
<p></p>
</div><div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage1_hardwaregain</strong>
30.000000 dB
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit90" id="mgc_setting_the_current_gain">MGC setting the current Gain</h3>
<div class="level3">

<p>
Only available in Manual Gain Control Mode (MGC)
</p>
<div class="table sectionedit91"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Attribute </th><th class="col1"> Data Path </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> in_voltage0_hardwaregain </td><td class="col1"> <strong>RX1</strong> </td>
	</tr>
	<tr class="row2">
		<td class="col0"> in_voltage1_hardwaregain </td><td class="col1"> <strong>RX2</strong> </td>
	</tr>
	<tr class="row3">
		<td class="col0"> in_voltage2_hardwaregain </td><td class="col1"> <strong>OBS1</strong> if <strong>in_voltage2_powerdown == 0</strong> </td>
	</tr>
	<tr class="row4">
		<td class="col0"> in_voltage3_hardwaregain </td><td class="col1"> <strong>OBS2</strong> if <strong>in_voltage3_powerdown == 0</strong> </td>
	</tr>
</tbody></table></div>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 20 &gt; in_voltage0_hardwaregain</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_hardwaregain</strong>
20.000000 dB
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit94" id="mgc_controlling_the_gain_using_pin_control">MGC controlling the gain using pin control</h3>
<div class="level3">

<p>
These attributes configure the <abbr title="General Purpose Input/Output">GPIO</abbr> input pin and step size to allow the
BBP to control gain changes in Rx signal chain.
A high pulse on the 'rxGainIncPin' in pin control mode will increment the
gain by the value set in 'incStep'.
A high pulse on the 'rxGainDecPin' in pin control mode will decrement the
gain by the value set in 'decStep'.
</p>

<p>
Writing 0, N or 1, Y to the below attributes either disables or enables the corresponding channel pincontrol option.
</p>
<div class="table sectionedit95"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Attribute </th><th class="col1"> Data Path </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> in_voltage0_gain_control_pin_mode_en </td><td class="col1"> <strong>RX1</strong> </td>
	</tr>
	<tr class="row2">
		<td class="col0"> in_voltage1_gain_control_pin_mode_en </td><td class="col1"> <strong>RX2</strong> </td>
	</tr>
</tbody></table></div>

</div>

<h2 class="sectionedit96" id="tx_attenuation_control">Tx Attenuation Control</h2>
<div class="level2">

<p>
The TX attenuation/gain can be individually controlled for TX1 and TX2.
The range is from 0 to -41.95 <abbr title="decibel">dB</abbr> in programmable steps sizes.
The nomenclature used here is gain instead of attenuation, so all values are expressed negative.
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_voltage0_hardwaregain</strong>
-10.000000 dB
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo -40.25 &gt;  out_voltage0_hardwaregain</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_voltage0_hardwaregain</strong>
-40.250000 dB
</pre>
<p></p>
</div><div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat out_voltage1_hardwaregain</strong>
-10.000000 dB
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit101" id="tx_attenuation_pin_control">Tx Attenuation Pin Control</h3>
<div class="level3">

<p>
These attributes configure the <abbr title="General Purpose Input/Output">GPIO</abbr> input pin and step size to allow the
BBP to control attenuation changes in Tx signal chain.
A high pulse on the 'txAttenIncPin' in pin control mode will increment the
gain by the value set in 'stepSize'.
A high pulse on the 'txAttenDecPin' in pin control mode will decrement the
gain by the value set in 'stepSize'.
</p>

<p>
Writing 0, N or 1, Y to the below attributes either disables or enables the corresponding channel pincontrol option.
</p>
<div class="table sectionedit102"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Attribute </th><th class="col1"> Data Path </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> out_voltage0_atten_control_pin_mode_en </td><td class="col1"> <strong>TX1</strong> </td>
	</tr>
	<tr class="row2">
		<td class="col0"> out_voltage1_atten_control_pin_mode_en </td><td class="col1"> <strong>TX2</strong> </td>
	</tr>
</tbody></table></div>

</div>

<h2 class="sectionedit103" id="received_strength_signal_indicator_rssi">Received Strength Signal Indicator (RSSI)</h2>
<div class="level2">

<p>
This attribute will report RSSI - however currently it reports Decimated Power instead.
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_rssi</strong>
12.75 dB
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit106" id="calibration_tracking_controls">Calibration Tracking Controls</h2>
<div class="level2">

<p>
Tracking Calibrations:
The ARM processor is tasked with ensuring that Quadrature Error Correction (QEC) and Local Oscillator Leakage (LOL) corrections are optimal throughout device operation, <abbr title="in other words">i.e.</abbr> over time, attenuation, and temperature. It achieves this by performing calibrations at regular intervals. These calibrations are termed “tracking calibrations”, and utilize normal traffic data to update the path correction coefficients.
</p>

<p>
Writing 0, N or 1, Y to the below attributes either disables or enables the corresponding tracking option.
</p>
<div class="table sectionedit107"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Attribute </th><th class="col1"> Data Path </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0"> in_voltage0_quadrature_tracking_en </td><td class="col1"> <strong>RX1</strong> </td>
	</tr>
	<tr class="row2">
		<td class="col0"> in_voltage1_quadrature_tracking_en </td><td class="col1"> <strong>RX2</strong> </td>
	</tr>
	<tr class="row3">
		<td class="col0"> in_voltage2_quadrature_tracking_en </td><td class="col1"> <strong>ORX1</strong> </td>
	</tr>
	<tr class="row4">
		<td class="col0"> in_voltage3_quadrature_tracking_en </td><td class="col1"> <strong>ORX2</strong> </td>
	</tr>
	<tr class="row5">
		<td class="col0"> out_voltage0_lo_leakage_tracking_en </td><td class="col1"> <strong>TX1</strong> </td>
	</tr>
	<tr class="row6">
		<td class="col0"> out_voltage0_quadrature_tracking_en </td><td class="col1"> <strong>TX1</strong> </td>
	</tr>
	<tr class="row7">
		<td class="col0"> out_voltage1_lo_leakage_tracking_en </td><td class="col1"> <strong>TX2</strong> </td>
	</tr>
	<tr class="row8">
		<td class="col0"> out_voltage1_quadrature_tracking_en </td><td class="col1"> <strong>TX2</strong> </td>
	</tr>
</tbody></table></div>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage_quadrature_tracking_en</strong>
1
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 0 &gt; in_voltage0_quadrature_tracking_en</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat in_voltage0_quadrature_tracking_en</strong>
0
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit110" id="arm_calibrations">ARM Calibrations</h2>
<div class="level2">

<p>
Sometimes a certain calibration is not required during power-up, or some other external condition must be met. The attributes detailed below allow the user to reschedule a calibration.  Please see <em>“SYSTEM CONSIDERATIONS FOR ARM CALIBRATIONS”</em> section of the Talise User Guide for more information.
</p>

<p>
Writing 0, N or 1, Y to the below attributes either disables or enables the corresponding init calibration. They are not run immediately, they are just masked. In order to run them the <code>calibrate</code> attributes must be written 1 or Y.
</p>
<ul>
<li class="level1"><div class="li"> calibrate_frm_en</div>
</li>
<li class="level1"><div class="li"> calibrate_rx_phase_correction_en</div>
</li>
<li class="level1"><div class="li"> calibrate_rx_qec_en</div>
</li>
<li class="level1"><div class="li"> calibrate_tx_lol_en</div>
</li>
<li class="level1"><div class="li"> calibrate_tx_lol_ext_en</div>
</li>
<li class="level1"><div class="li"> calibrate_tx_qec_en</div>
</li>
<li class="level1"><div class="li"> calibrate</div>
</li>
</ul>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat calibrate_tx_lol_ext_en</strong>
0
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 1 &gt; calibrate_tx_lol_ext_en</strong>
root:/sys/bus/iio/devices/iio:device3&gt; <strong>cat calibrate_tx_lol_ext_en</strong>
1
root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 1 &gt; calibrate</strong>
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit113" id="auxadc_reading">AuxADC Reading</h2>
<div class="level2">

<p>
The ADRV9009 contains an auxiliary ADC that is multiplexed to 4 input pins (AUXADC_x). The auxiliary ADC is 12 bits with an input voltage range of 0.05 <abbr title="volt">V</abbr> to VDDA_3P3 – 0.05 <abbr title="volt">V</abbr>. When enabled, the auxiliary ADC is free running. <abbr title="Serial Peripheral Interface">SPI</abbr> reads provide the last value latched at the ADC output. 
TheAuxiliary ADCs can be read like any other IIO ADC.
</p>

<p>
Attributes are:
</p>
<ul>
<li class="level1"><div class="li"> in_voltage[4..7]_offset</div>
</li>
<li class="level1"><div class="li"> in_voltage[4..7]_raw</div>
</li>
<li class="level1"><div class="li"> in_voltage[4..7]_scale</div>
</li>
</ul>

<p>
To obtain the reading in <abbr title="millivolt">mV</abbr> calculate: <em>(in_voltage4_raw + in_voltage4_offset) * in_voltage4_scale</em>
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>grep “” in_voltage4_</strong>*
in_voltage4_offset:45
in_voltage4_raw:66
in_voltage4_scale:0.775194
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit116" id="auxdac_writing">AuxDAC Writing</h2>
<div class="level2">

<p>
The ADRV9009 contains ten identical auxiliary DACs (AUXDAC_0 to AUXDAC_9) that can supply bias voltages, analog control voltages, or other system functionality. 
TheAuxiliary DACs can be accessed like any other IIO DAC.
</p>

<p>
Attributes are:
</p>
<ul>
<li class="level1"><div class="li"> out_voltage[2..11]_raw</div>
</li>
<li class="level1"><div class="li"> out_voltage[2..11]_offset</div>
</li>
<li class="level1"><div class="li"> out_voltage[2..11]_scale</div>
</li>
</ul>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root:/sys/bus/iio/devices/iio:device3&gt; <strong>grep “” out_voltage2</strong>*
out_voltage2_offset: 2726
out_voltage2_raw:0
out_voltage2_scale: 0.782954

root:/sys/bus/iio/devices/iio:device3&gt; <strong>echo 1000 &gt; out_voltage2_raw</strong>
</pre>
<p></p>
</div>
</div>

<h1 class="sectionedit119" id="advanced_debug_facilities">Advanced Debug Facilities</h1>
<div class="level1">

<p>
The ADRV9009 driver supports a number of advanced debug controls via the kernel <a href="https://en.wikipedia.org/wiki/debugfs" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/debugfs">debugfs</a>.
How these device files/controls can be used is described here. 
The <a href="https://wiki.analog.com/resources/tools-software/linux-software/adrv9009_advanced_plugin" class="wikilink1" title="resources:tools-software:linux-software:adrv9009_advanced_plugin">ADRV9009 Advanced Plugin</a> directly controls these and adds a user friendly interface.
</p>

</div>

<h2 class="sectionedit120" id="runtime_device_driver_customization">Runtime Device Driver Customization</h2>
<div class="level2">

<p>
There is a large number of <a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009-customization" class="wikilink1" title="resources:tools-software:linux-drivers:iio-transceiver:adrv9009-customization">ADRV9009 Device Driver Customization</a> options available. Typically these are supplied via <a href="https://en.wikipedia.org/wiki/device_tree" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/device_tree"> Devicetree</a>.
However for debug and evaluation purposes these can be changed during runtime. Please note that changes will be lost if the device is unbinded or the platform is rebooted. Changes will only take affect once the <code>initialize</code> attribute is written <code>1</code>. It should also be noted that the ADRV9009 will take a RESET, so current settings done  via the main IIO <abbr title="Application Programming Interface">API</abbr> will be lost. Accessing <a href="https://en.wikipedia.org/wiki/debugfs" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/debugfs">debugfs</a> requires root privileges. Only device files prefixed with <code>adi,</code> are <a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009-customization" class="wikilink1" title="resources:tools-software:linux-drivers:iio-transceiver:adrv9009-customization">ADRV9009 Device Driver Customization Options</a>.
</p>

<p>
In order to identify if the IIO device in question (adrv9009-phy) you first need to identify the IIO device number.
Therefore read the name attribute of each IIO device
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:~# grep "" /sys/bus/iio/devices/iio\:device*/name
/sys/bus/iio/devices/iio:device0/name:ams
/sys/bus/iio/devices/iio:device1/name:ad9528-1
/sys/bus/iio/devices/iio:device2/name:ad7291
/sys/bus/iio/devices/iio:device3/name:adrv9009-phy
/sys/bus/iio/devices/iio:device4/name:axi-adrv9009-rx-obs-hpc
/sys/bus/iio/devices/iio:device5/name:axi-adrv9009-tx-hpc
/sys/bus/iio/devices/iio:device6/name:axi-adrv9009-rx-hpc 
root@analog:~# 
</pre>
<p></p>
</div>
<p>
Change directory to <strong>/sys/kernel/debug</strong>/iio/ iio:deviceX.
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:~# <strong>cd /sys/kernel/debug/iio/iio\:device3</strong>
root@analog:/sys/kernel/debug/iio/iio:device3# <strong>ls</strong> 
[[--snip--]]
adi,tx-settings-tx1-atten_md-b
adi,tx-settings-tx2-atten_md-b
adi,tx1-atten-ctrl-pin-enable
adi,tx1-atten-ctrl-pin-step-size
adi,tx1-atten-ctrl-pin-tx-atten-dec-pin
adi,tx1-atten-ctrl-pin-tx-atten-inc-pin
adi,tx2-atten-ctrl-pin-enable
adi,tx2-atten-ctrl-pin-step-size
adi,tx2-atten-ctrl-pin-tx-atten-dec-pin
adi,tx2-atten-ctrl-pin-tx-atten-inc-pin
bist_framer_a_prbs
bist_framer_b_prbs
bist_tone
direct_reg_access
initialize
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit125" id="example_to_change_from_internal_to_external_tx_lo">Example to change from internal to external TX LO</h3>
<div class="level3">
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device3# <strong>cat adi,dig-clocks-rf-pll-use-external-lo</strong>
0

root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 1 &gt; adi,dig-clocks-rf-pll-use-external-lo</strong>
root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 1 &gt; initialize</strong> 
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit128" id="build-in_self-test_bist">Build-In Self-Test (BIST)</h2>
<div class="level2">

<p>
Controling these attribute files directly take effect and therefore don’t require the <code>initialize</code> sequence.
Test functionality exposed here is only meant to route or inject test patterns/data than can be used to validate the Digital Interface or functionality of the device.
</p>

</div>

<h3 class="sectionedit129" id="bist_tone">BIST Tone</h3>
<div class="level3">

<p>
Digital numerically controlled oscillator (NCO) to create a CW test tone on the Tx1 and Tx2 RF outputs.
The TxAttenuation is forced in this function to max analog output power, but the digital attenuation is backed off 
6dB to make sure the digital filter does not clip and cause spurs in the tx spectrum.
</p>

<p>
<strong>SYNTAX:</strong>
</p>

<p>
<strong>bist_tone</strong> <em>&lt;Enable&gt; &lt;TX1 Tone Frequency in <abbr title="kilohertz">kHz</abbr>&gt; &lt;TX2 Tone Frequency in <abbr title="kilohertz">kHz</abbr>&gt;</em>
</p>

<p>
<strong>NCO Tone frequency Valid range from -IQrate/2 to IQrate/2</strong>
</p>
<div class="table sectionedit130"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Enable </th><td class="col1"></td>
	</tr>
	<tr class="row1">
		<th class="col0"> Value </th><th class="col1"> Function </th>
	</tr>
	</thead>
	<tbody><tr class="row2">
		<td class="col0"> 0 </td><td class="col1"> Disable </td>
	</tr>
	<tr class="row3">
		<td class="col0"> 1 </td><td class="col1"> Enable </td>
	</tr>
</tbody></table></div>

<p>
<strong>Example</strong>: Inject 3MHz tone into TX1 and 5MHz into TX2
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 1 3000 5000 &gt; bist_tone </strong>
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit133" id="prbs">PRBS</h3>
<div class="level3">

<p>
Pseudorandom Binary Sequence (<a href="https://en.wikipedia.org/wiki/Pseudorandom_binary_sequence" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/Pseudorandom_binary_sequence">PRBS</a>) that can either injected into the RX or OBS path.
</p>

<p>
<strong>SYNTAX:</strong>
</p>

<p>
<strong> bist_framer_a_prbs</strong> <em>&lt;Value&gt;</em> <br>

<strong> bist_framer_b_prbs</strong> <em>&lt;Value&gt;</em>
</p>
<div class="table sectionedit134"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Injection Point Framer A/B </th><td class="col1"></td>
	</tr>
	<tr class="row1">
		<th class="col0"> Value </th><th class="col1"> Function and polynomial order </th>
	</tr>
	</thead>
	<tbody><tr class="row2">
		<td class="col0"> ADC_DATA </td><td class="col1"> 0 </td>
	</tr>
	<tr class="row3">
		<td class="col0"> CHECKERBOARD </td><td class="col1"> 1 </td>
	</tr>
	<tr class="row4">
		<td class="col0"> TOGGLE0_1 </td><td class="col1"> 2 </td>
	</tr>
	<tr class="row5">
		<td class="col0"> PRBS31 </td><td class="col1"> 3 </td>
	</tr>
	<tr class="row6">
		<td class="col0"> PRBS23 </td><td class="col1"> 4 </td>
	</tr>
	<tr class="row7">
		<td class="col0"> PRBS15 </td><td class="col1"> 5 </td>
	</tr>
	<tr class="row8">
		<td class="col0"> PRBS9 </td><td class="col1"> 6 </td>
	</tr>
	<tr class="row9">
		<td class="col0"> PRBS7 </td><td class="col1"> 7 </td>
	</tr>
	<tr class="row10">
		<td class="col0"> RAMP </td><td class="col1"> 8 </td>
	</tr>
	<tr class="row11">
		<td class="col0"> PATTERN_REPEAT </td><td class="col1"> 14 </td>
	</tr>
	<tr class="row12">
		<td class="col0"> PATTERN_ONCE </td><td class="col1"> 15 </td>
	</tr>
</tbody></table></div>

<p>
<strong>Example</strong>: Inject PRBS15 into RX
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 5 &gt; bist_framer_a_prbs</strong>
</pre>
<p></p>
</div>
</div>

<h3 class="sectionedit137" id="loopback">Loopback</h3>
<div class="level3">

<p>
Deframer framer loopback. Injects TX data back into the digital RX path, while bypassing all the analog and converter sections.
</p>

<p>
<strong>SYNTAX:</strong>
</p>

<p>
<strong>bist_framer_a_loopback</strong> <em>&lt;Value&gt;</em> <br>

<strong>bist_framer_b_loopback</strong> <em>&lt;Value&gt;</em>
</p>
<div class="table sectionedit138"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Enable </th><td class="col1"></td>
	</tr>
	<tr class="row1">
		<th class="col0"> Value </th><th class="col1"> Function </th>
	</tr>
	</thead>
	<tbody><tr class="row2">
		<td class="col0"> 0 </td><td class="col1"> Disable </td>
	</tr>
	<tr class="row3">
		<td class="col0"> 1 </td><td class="col1"> Enable </td>
	</tr>
</tbody></table></div>

<p>
<strong>Example</strong>: Enable framer A loopback
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 1 &gt; bist_framer_a_loopback</strong>
</pre>
<p></p>
</div>
</div>

<h2 class="sectionedit141" id="gpio_3v3_controls">GPIO 3v3 Controls</h2>
<div class="level2">

<p>
This attribute allows controlling the 12 GPIO3v3 via debugfs.
In order to use these pins, the adi,gpio3v3-source-control attribute
must be set. Please refer to the reference manual UG-1295.
In addition, dedicated output pins must be masked via adi,gpio3v3-output-enable-mask.
</p>
<pre class="notranslate code">adi,gpio3v3-source-control = &lt;0x333&gt;;
adi,gpio3v3-output-enable-mask = &lt;0xFFF&gt;;
adi,gpio3v3-output-level-mask = &lt;0x0&gt;;</pre>

<p>
For test purposes these attributes can be also set via debugfs.
</p>
<pre class="notranslate code">cd /sys/kernel/debug/iio/iio:device3
echo 0x333 &gt; adi,gpio3v3-source-control
echo 0xFFF &gt; adi,gpio3v3-output-enable-mask
echo 1 &gt; initialize</pre>

<p>
The gpio3v3 debugfs control allows setting individual GPIOs by number 0…11. 
Or altogether using the 0xFFF mask. GPIOs masked as inputs can also be read.
</p>

<p>
<strong>SYNTAX:</strong>
</p>

<p>
<strong>gpio3v3</strong> <em>&lt;Identifier&gt;</em> <em>&lt;Value&gt;</em> <br>

</p>
<div class="table sectionedit142"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0"> Enable </th><td class="col1"></td>
	</tr>
	<tr class="row1">
		<th class="col0"> Value </th><th class="col1"> Function </th>
	</tr>
	</thead>
	<tbody><tr class="row2">
		<td class="col0"> 0 </td><td class="col1"> Disable </td>
	</tr>
	<tr class="row3">
		<td class="col0"> 1 </td><td class="col1"> Enable </td>
	</tr>
	<tr class="row4">
		<td class="col0"> X </td><td class="col1"> Enable Mask if Identifier=0xFFF </td>
	</tr>
</tbody></table></div>

<p>
<strong>Example</strong>:
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 0 1 &gt; gpio3v3</strong>
root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 0xFFF 0x123 &gt; gpio3v3</strong>
root@analog:/sys/kernel/debug/iio/iio:device3# <strong>echo 0xFFF 0x0 &gt; gpio3v3</strong>
</pre>
<p></p>
</div>
</div>

<h1 class="sectionedit145" id="low_level_register_access_via_debugfs_direct_reg_access">Low level register access via debugfs (direct_reg_access)</h1>
<div class="level1">

</div>
<div class="plugin_include_content plugin_include__software:linux:docs:iio:iio_snippets">
<div class="level1">

<p>
Some IIO drivers feature an optional debug facility, allowing users to read or write registers directly.
Special care needs to be taken when using this feature, since you can modify registers on the back of the driver.
</p>
<div class="notetip">To simplify direct register access you may want to use the libiio <a href="https://wiki.analog.com/resources/tools-software/linux-software/libiio/iio_reg" class="wikilink1" title="resources:tools-software:linux-software:libiio:iio_reg">iio_reg</a> command line utility.

</div>
<p>
Accessing debugfs requires root privileges.
</p>

<p>
In order to identify if the IIO device in question feature this option you first need to identify the IIO device number.
</p>

<p>
Therefore read the name attribute of each IIO device
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:~# grep "" /sys/bus/iio/devices/iio\:device*/name
/sys/bus/iio/devices/iio:device0/name:ad7291
/sys/bus/iio/devices/iio:device1/name:ad9361-phy
/sys/bus/iio/devices/iio:device2/name:xadc
/sys/bus/iio/devices/iio:device3/name:adf4351-udc-rx-pmod
/sys/bus/iio/devices/iio:device4/name:adf4351-udc-tx-pmod
/sys/bus/iio/devices/iio:device5/name:cf-ad9361-dds-core-lpc
/sys/bus/iio/devices/iio:device6/name:cf-ad9361-lpc
root@analog:~# 
</pre>
<p></p>
</div>
<p>
Change directory to <strong>/sys/kernel/debug</strong>/iio/ iio:deviceX and check if the direct_reg_access file exists.
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:~# cd /sys/kernel/debug/iio/iio\:device1
root@analog:/sys/kernel/debug/iio/iio:device1# ls direct_reg_access 
direct_reg_access
</pre>
<p></p>
</div>
<p>
<strong>Reading</strong>
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device1# echo 0x7 &gt; direct_reg_access                                                                                                                                 
root@analog:/sys/kernel/debug/iio/iio:device1# cat direct_reg_access 
0x40
</pre>
<p></p>
</div>
<p>
<strong>Writing</strong>
</p>

<p>
Write ADDRESS VALUE 
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device1# echo 0x7 0x50  &gt; direct_reg_access                                                                                                                            
root@analog:/sys/kernel/debug/iio/iio:device1# cat direct_reg_access 
0x50
</pre>
<p></p>
</div>
<p>
<strong>Accessing HDL CORE registers</strong>
</p>

<p>
Special <abbr title="Analog Devices, Inc.">ADI</abbr> device driver convention for devices that have both:<br>

</p>
<ul>
<li class="level1"><div class="li"> a <abbr title="Serial Peripheral Interface">SPI</abbr>/<abbr title="Inter-Integrated Circuit">I2C</abbr> control interface </div>
</li>
<li class="level1"><div class="li"> and some sort of HDL Core with registers (AXI)</div>
</li>
</ul>

<p>
In this case when accessing the HDL Core Registers always set BIT31.
</p>

<p>
The register map for typical <abbr title="Analog Devices, Inc.">ADI</abbr> HDL cores can be found here:
<a href="https://wiki.analog.com/resources/fpga/docs/hdl/regmap" class="wikilink1" title="resources:fpga:docs:hdl:regmap">Register Map</a>
</p>
<div class="wrap_box wrap_bggreen plugin_wrap">
<p>
<span class="wrap_info ">This specifies any shell prompt running on the target</span>
</p><pre class="notranslate">root@analog:/sys/kernel/debug/iio/iio:device6# echo 0x80000000 &gt; direct_reg_access                                                                                                                           
root@analog:/sys/kernel/debug/iio/iio:device6# cat direct_reg_access 
0x80062
</pre>
<p></p>
</div>
</div>
<div class="inclmeta level1">
	<abbr class="published" title="2011-03-02T15:16:14Z">02 Mar 2011 15:16</abbr>
</div>
</div>
<div class="level1">

</div>

<h1 class="sectionedit158" id="more_information">More Information</h1>
<div class="level1">

</div>
<div class="plugin_include_content plugin_include__software:linux:docs:iio:iio_snippets">
<div class="level1">
<ul>
<li class="level1"><div class="li"> IIO mailing list: <a href="mailto:linux%20%5Bdash%5D%20iio%20%5Bat%5D%20vger%20%5Bdot%5D%20kernel%20%5Bdot%5D%20org" class="mail" title="linux [dash] iio [at] vger [dot] kernel [dot] org">linux [dash] iio [at] vger [dot] kernel [dot] org</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing" class="urlextern" target="_blank" title="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing" rel="nofollow noopener"> IIO Linux Kernel Documentation sysfs-bus-iio-*</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://git.kernel.org/?p=linux/kernel/git/gregkh/staging.git;a=tree;f=drivers/staging/iio/Documentation;hb=refs/heads/staging-next" class="urlextern" target="_blank" title="http://git.kernel.org/?p=linux/kernel/git/gregkh/staging.git;a=tree;f=drivers/staging/iio/Documentation;hb=refs/heads/staging-next" rel="nofollow noopener"> IIO Documentation</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-software/iio_oscilloscope" class="wikilink1" title="resources:tools-software:linux-software:iio_oscilloscope"> IIO test and visualization application</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-software/libiio" class="wikilink1" title="resources:tools-software:linux-software:libiio">libiio - IIO system library</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/linux-software/libiio_internals" class="wikilink1" title="resources:tools-software:linux-software:libiio_internals">libiio - Internals</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://wiki.analog.com/resources/tools-software/pointers" class="wikilink1" title="resources:tools-software:pointers">Pointers and good books</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://events.linuxfoundation.org/sites/events/files/slides/iio_high_speed.pdf" class="urlextern" target="_blank" title="http://events.linuxfoundation.org/sites/events/files/slides/iio_high_speed.pdf" rel="nofollow noopener">IIO High Speed</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://ftp.heanet.ie/mirrors/fosdem-video/2015/devroom-software_defined_radio/iiosdr.mp4" class="urlextern" target="_blank" title="http://ftp.heanet.ie/mirrors/fosdem-video/2015/devroom-software_defined_radio/iiosdr.mp4" rel="nofollow noopener">Video from FOSDEM of how IIO is used in SDR applications</a></div>
</li>
<li class="level1"><div class="li"> <a href="https://www.youtube.com/watch?v=CS9NuRBzN5Y" class="urlextern" target="_blank" title="https://www.youtube.com/watch?v=CS9NuRBzN5Y" rel="nofollow noopener">libiio API introduction presentation video</a></div>
</li>
</ul>

</div>
<div class="plugin_include_content plugin_include__resources:tools-software:linux-drivers:need_help">
<div class="level2">

<p>
<em class="u"><strong>Need Help?</strong></em>
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://ez.analog.com/community/linux-device-drivers/linux-software-drivers" class="interwiki iw_ez" title="http://ez.analog.com/community/linux-device-drivers/linux-software-drivers">Analog Devices Linux Device Drivers Help Forum</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://ez.analog.com/discussion/create!input.jspa?containerType=14&amp;containerID=2076" class="interwiki iw_ez" title="http://ez.analog.com/discussion/create!input.jspa?containerType=14&amp;containerID=2076">Ask a Question</a> </div>
</li>
</ul>

</div>
<div class="inclmeta level2">
	<abbr class="published" title="2012-07-31T17:53:48Z">31 Jul 2012 17:53</abbr>
	· <span class="vcard author">larsc</span>
</div>
</div>
<div class="level2">

</div>
<div class="inclmeta level1">
	<abbr class="published" title="2011-03-02T15:16:14Z">02 Mar 2011 15:16</abbr>
</div>
</div>
<div class="level1">

</div>

                        <!-- wikipage stop -->
                    </div>

                    <div class="docInfo"><bdi>resources/tools-software/linux-drivers/iio-transceiver/adrv9009.txt</bdi> · Last modified: 26 Jul 2019 11:20 by <bdi>mhennerich</bdi></div>

                                    </div>
            </div>
            <!-- /content -->

            <hr class="a11y">

            <!-- PAGE ACTIONS -->
            <div id="dokuwiki__pagetools">
                <h3 class="a11y">Page Tools</h3>
                <div class="tools">
                    <ul>
                        <li class="source"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=edit" title="View Source [v]" rel="nofollow" accesskey="v"><span>View Source</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5l3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41-3.74 3.74m11.16 0l-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41 3.74-3.74z"></path></svg></a></li><li class="revs"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=revisions" title="History [o]" rel="nofollow" accesskey="o"><span>History</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"></path></svg></a></li><li class="backlink"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009?do=backlink" title="Backlinks" rel="nofollow"><span>Backlinks</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"></path></svg></a></li><li class="menuitemfolded"><a href="javascript:void(0);" title="Fold/unfold all" rel="nofollow" class="fold_unfold_all_new" onclick="fold_unfold_all();"><span>Fold/unfold all</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M 2,0 L 6.5,3 L 2,6 z M 8,6.6 L 12.5,9.6 L 8,12.6 z M 14,13.2 L 20,13.2 L 17,17.7 z"></path></svg></a></li><li class="top"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#dokuwiki__top" title="[ Back to top ] [t]" rel="nofollow" accesskey="t"><span>[ Back to top ]</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path></svg></a></li>                    </ul>
                </div>
            </div>
        </div>
        <!-- /wrapper -->

    </div>
    <!-- /container -->
</div>
<!-- /site -->

﻿<a class="backtotop" href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#header">&nbsp;</a>
<footer class="footer" id="footer">
    <div id="cookie-consent-container" class="modal fade" role="dialog" data-id="gdpr-consent" style="display: none;">
        <div class="modal-dialog modal-dialog-center" style="margin-top: -189.692px; margin-left: -480px;">
            <div class="modal-content" style="max-height: 424px;">
                <div class="modal-header"><h4 class="modal-title"><img src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/ADI_Logo_AWP.png" alt="ADI"> Analog Devices Uses Cookies for Enhanced Online Performance </h4>
                </div>
                <div class="modal-body" style="max-height: 330.154px;">
                    <div class="short-description">
                        <p> Some cookies are required for secure log-ins but others are optional for functional activities. Our data collection is used to improve our products and services. We recommend you accept our cookies to ensure you’re receiving the best performance and functionality our site can provide. For additional information you may view the <a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#" data-id="cookie-details">cookie details</a>. Read more about our <a href="https://www.analog.com/en/about-adi/landing-pages/001/privacy_security_statement.html" target="_blank">privacy policy</a>. </p><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#" class="btn btn-success" data-id="consent"><em class="fa fa-check"></em> Accept and proceed </a>
                    </div>
                    <div class="long-description"><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#" class="btn btn-success" data-id="consent"><i class="fa fa-check"></i> Accept and proceed </a>
                        <p>The cookies we use can be categorized as follows:</p>
                        <dl><dt>Strictly Necessary Cookies:</dt>
                            <dd> These are cookies that are required for the operation of analog.com or specific functionality offered. They either serve the sole purpose of carrying out network transmissions or are strictly necessary to provide an online service explicitly requested by you. </dd><dt>Analytics/Performance Cookies:</dt>
                            <dd> These cookies allow us to carry out web analytics or other forms of audience measuring such as recognizing and counting the number of visitors and seeing how visitors move around our website. This helps us to improve the way the website works, for example, by ensuring that users are easily finding what they are looking for. </dd><dt>Functionality Cookies:</dt>
                            <dd> These cookies are used to recognize you when you return to our website. This enables us to personalize our content for you, greet you by name and remember your preferences (for example, your choice of language or region). Loss of the information in these cookies may make our services less functional, but would not prevent the website from working. </dd><dt>Targeting/Profiling Cookies:</dt>
                            <dd> These cookies record your visit to our website and/or your use of the services, the pages you have visited and the links you have followed. We will use this information to make the website and the advertising displayed on it more relevant to your interests. We may also share this information with third parties for this purpose. </dd>
                        </dl><a href="https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009#" class="btn btn-link" data-id="decline">Decline cookies</a></div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <div class="row footer-bottom" name="adi_footer_bottom">
            <div class="leftCol col-md-6 col-xs-12">
                <p>©1995 - 2019 Analog Devices, Inc. All Rights Reserved</p>
            </div>
            <div class="rightCol col-md-6 col-xs-12">
                <a href="https://www.analog.com/en/index.html" target="" title="Home Page">Analog.com</a>
                <a href="https://www.analog.com/en/about-adi/contact-us.html" target="" title="Contact Us">Contact Us</a>
                <a href="https://www.analog.com/en/about-adi/landing-pages/001/privacy_security_statement.html" target="" title="Privacy &amp; Security">Privacy &amp; Security</a>
                <a href="https://www.analog.com/en/landing-pages/001/privacy-settings.html" target="" title="Privacy Settings">Privacy Settings</a>
                <a href="https://www.analog.com/en/about-adi/landing-pages/001/terms_of_use.html" target="" title="Terms of use">Terms of use</a>
            </div>
        </div>
        </div>
    
    
    <script type="text/javascript">
        var analytics = '//assets.adobedtm.com/50979bd26cd331a01d5fdada46d46662a6c23d1e/satelliteLib-6918599d4993e6e0537845174bbba34655d0ec94.js';
        var cookiesToDelete = [{ "Domain": ".analog.com", "Cookie": ["__qca", "adiHintCookie", "bCrumbs", "cookieAccepted", "dmdbase_cdc", "ELOQUA", "FedAuthentication", "gpv_p14", "gpv_v100", "myAnalog_id", "Mysite_info", "s_cc", "s_dfa", "s_fid", "s_gad", "s_gpv", "s_invisit", "s_lv", "s_nr", "s_ptc", "s_sq", "s_vi", "s_vnum", "es_visited", "AdiSessionAuthCookie", "AdiSecureDlCookie"] }, { "Domain": ".investor.analog.com", "Cookie": ["ADI_BRIEFCASE", "ADI_SESSION"] }, { "Domain": "careers.analog.com", "Cookie": ["in_ref", "Per_UniqueID", "PLAY_SESSION", "VISITED_COUNTRY", "VISITED_LANG", "ext_trk", "_gat_UA-84784380-31"] }, { "Domain": "distiadmin-dev.corpnt.analog.com", "Cookie": ["ASP.NET_SessionId"] }, { "Domain": "distributor-dev.corpnt.analog.com", "Cookie": ["FedAuth1", "FedAuth", "ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "_sdsat_Email Address", "dmdbase", "_sdsat_DevQaOrProd"] }, { "Domain": "ez.analog.com", "Cookie": ["containerSecurityToken", "jive.security.context", "X-JCAPI-Token ", "BIGipServerpool_vanity_analog.jiveon.com", "JSESSIONID", "jive.login.ts"] }, { "Domain": "form.analog.com", "Cookie": ["AdiSessionAuthCookie", "FedAuth1", "FedAuth", "ASP.NET_SessionId", "AlteonP", "ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "_sdsat_DevQaOrProd", "adicftlassetdata", "AdiSessionAuthCookie", "_sdsat_Membership Status", "_sdsat_Email Address"] }, { "Domain": "registration.analog.com", "Cookie": ["ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "registration-dev.corpnt.analog.com", "_sdsat_Email Address", "FedAuth1", "FedAuth", "_sdsat_Membership Status", "AlteonP", "ASP.NET_SessionId"] }, { "Domain": "sdk.analog.com", "Cookie": ["dmdbase", "_sdsat_DevQaOrProd", "ipe_30155_fov", "ipe.30155.pageViewedCount", "_sdsat_Membership Status", "_sdsat_Email Address", "ipe_s", "AdiSessionAuthCookie", "FedAuth1"] }, { "Domain": "shoppingcart.analog.com", "Cookie": ["ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "dmdbase", "_sdsat_DevQaOrProd", "_sdsat_Membership Status", "_sdsat_Email Address", "ASP.NET_SessionId", "adiSessionAuth", "FedAuth", "FedAuth1", "analogp", "USERID", "SHOPPINGCARTID", "DISTI_COUNTRY_CODE", "AlteonP"] }, { "Domain": "webuseradmin.analog.com", "Cookie": ["ASP.NET_SessionId"] }, { "Domain": "wiki.analog.com", "Cookie": ["DokuWiki", "DW<hash>", "DOKU_PREFS"] }, { "Domain": "www.analog.com", "Cookie": ["__atuvc", "__atuvs", "_sdsat_Email Address", "_sdsat_Membership Status", "DisclaimerConfirmation", "dmdbase", "downloadGoals", "sc.ASP.NET_SESSIONID", "sc.Status", "SC_ANALYTICS_GLOBAL_COOKIE", "website#lang", "ipe.30155.pageViewedCount", "ipe_30155_fov", "ipe_s", "_sdsat_DevQaOrProd", "ASP.NET_SessionId"] }];
    </script>
    <script type="text/javascript">
        var ADIAssetsPath = "//assets.analog.com";
        var cookiesToDelete = [{ "Domain": ".analog.com", "Cookie": ["__qca", "adiHintCookie", "bCrumbs", "cookieAccepted", "dmdbase_cdc", "ELOQUA", "FedAuthentication", "gpv_p14", "gpv_v100", "myAnalog_id", "Mysite_info", "s_cc", "s_dfa", "s_fid", "s_gad", "s_gpv", "s_invisit", "s_lv", "s_nr", "s_ptc", "s_sq", "s_vi", "s_vnum", "es_visited", "AdiSessionAuthCookie", "AdiSecureDlCookie"] }, { "Domain": ".investor.analog.com", "Cookie": ["ADI_BRIEFCASE", "ADI_SESSION"] }, { "Domain": "careers.analog.com", "Cookie": ["in_ref", "Per_UniqueID", "PLAY_SESSION", "VISITED_COUNTRY", "VISITED_LANG", "ext_trk", "_gat_UA-84784380-31"] }, { "Domain": "distiadmin-dev.corpnt.analog.com", "Cookie": ["ASP.NET_SessionId"] }, { "Domain": "distributor-dev.corpnt.analog.com", "Cookie": ["FedAuth1", "FedAuth", "ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "_sdsat_Email Address", "dmdbase", "_sdsat_DevQaOrProd"] }, { "Domain": "ez.analog.com", "Cookie": ["containerSecurityToken", "jive.security.context", "X-JCAPI-Token ", "BIGipServerpool_vanity_analog.jiveon.com", "JSESSIONID", "jive.login.ts"] }, { "Domain": "form.analog.com", "Cookie": ["AdiSessionAuthCookie", "FedAuth1", "FedAuth", "ASP.NET_SessionId", "AlteonP", "ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "_sdsat_DevQaOrProd", "adicftlassetdata", "AdiSessionAuthCookie", "_sdsat_Membership Status", "_sdsat_Email Address"] }, { "Domain": "registration.analog.com", "Cookie": ["ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "registration-dev.corpnt.analog.com", "_sdsat_Email Address", "FedAuth1", "FedAuth", "_sdsat_Membership Status", "AlteonP", "ASP.NET_SessionId"] }, { "Domain": "sdk.analog.com", "Cookie": ["dmdbase", "_sdsat_DevQaOrProd", "ipe_30155_fov", "ipe.30155.pageViewedCount", "_sdsat_Membership Status", "_sdsat_Email Address", "ipe_s", "AdiSessionAuthCookie", "FedAuth1"] }, { "Domain": "shoppingcart.analog.com", "Cookie": ["ipe_30155_fov", "ipe.30155.pageViewedCount", "ipe_s", "dmdbase", "_sdsat_DevQaOrProd", "_sdsat_Membership Status", "_sdsat_Email Address", "ASP.NET_SessionId", "adiSessionAuth", "FedAuth", "FedAuth1", "analogp", "USERID", "SHOPPINGCARTID", "DISTI_COUNTRY_CODE", "AlteonP"] }, { "Domain": "webuseradmin.analog.com", "Cookie": ["ASP.NET_SessionId"] }, { "Domain": "wiki.analog.com", "Cookie": ["DokuWiki", "DW<hash>", "DOKU_PREFS"] }, { "Domain": "www.analog.com", "Cookie": ["__atuvc", "__atuvs", "_sdsat_Email Address", "_sdsat_Membership Status", "DisclaimerConfirmation", "dmdbase", "downloadGoals", "sc.ASP.NET_SESSIONID", "sc.Status", "SC_ANALYTICS_GLOBAL_COOKIE", "website#lang", "ipe.30155.pageViewedCount", "ipe_30155_fov", "ipe_s", "_sdsat_DevQaOrProd", "ASP.NET_SessionId"] }];
    </script>
    <script>
        /* Copyright 2011-2015 iPerceptions, Inc. All rights reserved. Do not distribute. iPerceptions provides this code 'as is' without warranty of any kind, either express or implied. */
        window.iperceptionskey = 'acafac0d-3b8a-4d30-8a98-6cbcd5256d93';
        (function() { var a = document.createElement('script'),
            b = document.getElementsByTagName('body')[0];
            a.type = 'text/javascript';
            a.defer = true;
            a.src = '//universal.iperceptions.com/wrapper.js';
            b.appendChild(a); })();
    </script>
</footer><script type="text/javascript" defer="" src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/wrapper.js"></script>
<script type="text/javascript">
            if(typeof(_satellite) != 'undefined') {
            _satellite.pageBottom();
            }
        </script>
<div class="a11y" style="float: left"><img src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/taskrunner.php" width="2" height="1" alt=""></div>


<iframe src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/iFrame.html" id="iPerceptionsFrame" title="iPerceptionsFrame" style="display: none;"></iframe><script>_satellite.pageBottom();</script><script type="text/javascript" src="./ADRV9009, ADRV9008 highly integrated, wideband RF transceiver Linux device driver [Analog Devices Wiki]_files/up_loader.1.1.0.js"></script><script type="text/javascript">ttd_dom_ready(function() {if (typeof TTDUniversalPixelApi === 'function') {var universalPixelApi = new TTDUniversalPixelApi();universalPixelApi.init('tsmgpd7', ['cegtmc5'], 'https://insight.adsrvr.org/track/up');}});</script></body></html>